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 6A75BCD5BB3 for ; Fri, 22 May 2026 18:52:54 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id BBCC810E2B0; Fri, 22 May 2026 18:52:53 +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="hiOnX2C9"; 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 4587410E2AC for ; Fri, 22 May 2026 18:52:52 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; t=1779475959; cv=none; d=zohomail.com; s=zohoarc; b=DFk+vmjwXN2pD/0EkPxWvgJXNRikthMlxmWOgrbU3rY52FpQo5XKGmD1qeNh8SdFV5K0Ki0kkMdZ7pYcCaRqxn+T0S3T5BgLLy2xM+675lbS1LuggvEsbrkE3wrb8vtMrbm+S5Av6dckUHKaaavv8aRUVjZNocbXyRv93hmKvHM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779475959; 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=dKKe8YYb+7dYWMwofFqaVAtDQxKnZlJjGKXRXNM2tUQ=; b=gnUvG9R04owPMLZyZIOI3zrtTKqaIPOcEz5jObwCWeXSGe6iRzIa6VzaIveeDdVlis4ndlE4T4gihJ/n+UAPXgkG6dePwgl04Xkbh8dnbI+YjkHoeZRuQUTNot+CvNqayN3utR7KlcUALeka9gWyw7NQETdXOJMaRtAV1vYprxE= 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=1779475959; 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=dKKe8YYb+7dYWMwofFqaVAtDQxKnZlJjGKXRXNM2tUQ=; b=hiOnX2C9ije5tpK4OJhKiepKk5LEBGMZig/9AL4Z+1V2sjk6AosbEzzL1ldknhUi J5UhnngJbFKQjTZ35/RmpczWzxGJpXzmn9qyJpLclHyXQgTVXkxotr2x87Gk2LJ4K6k gIyVbi81glZJwRbgzoBBn825FK3xt947uP3wyCyI= Received: by mx.zohomail.com with SMTPS id 1779475958626697.7730073846611; Fri, 22 May 2026 11:52:38 -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 v13 5/6] drm/panthor: Support sparse mappings Date: Fri, 22 May 2026 19:51:59 +0100 Message-ID: <20260522185206.2798288-6-adrian.larumbe@collabora.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260522185206.2798288-1-adrian.larumbe@collabora.com> References: <20260522185206.2798288-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 b25zIHdpdGggYSBQYW50aG9yIEJPIHdhcyBtYWRlIHNvCmFzIHRvIHByb2ZpdCBmcm9tIHRoZSBl eGlzdGluZyBzaHJpbmtlciByZWNsYWltIGNvZGUuIFRoYXQgd2F5IG5vIHNwZWNpYWwKdHJlYXRt ZW50IG11c3QgYmUgZ2l2ZW4gdG8gdGhlIGR1bW15IHNwYXJzZSBCT3Mgd2hlbiByZWNsYWltaW5n IG1lbW9yeSwgYXMKd291bGQgYmUgdGhlIGNhc2UgaWYgd2UgaGFkIGNob3NlbiBhIHJhdyBrZXJu ZWwgcGFnZSBpbXBsZW1lbnRhdGlvbi4KCkEgbmV3IGR1bW15IEJPIGlzIGFsbG9jYXRlZCBwZXIg b3BlbiBmaWxlIGNvbnRleHQsIGJlY2F1c2UgZXZlbiB0aG91Z2ggdGhlClZ1bGthbiBzcGVjIG1h bmRhdGVzIHRoYXQgd3JpdGVzIGludG8gc3BhcnNlbHkgYm91bmQgcmVnaW9ucyBtdXN0IGJlCmRp c2NhcmRlZCwgb3VyIGltcGxlbWVudGF0aW9uIGlzIHN0aWxsIGEgd29ya2Fyb3VuZCBvdmVyIHRo ZSBmYWN0IE1hbGkgQ1NGCkdQVXMgY2Fubm90IHN1cHBvcnQgdGhpcyBiZWhhdmlvdXIgb24gdGhl IGhhcmR3YXJlIGxldmVsLCBzbyB3cml0ZXMgc3RpbGwKbWFrZSBpdCBpbnRvIHRoZSBiYWNraW5n IEJPLiBJZiB3ZSBoYWQgYSBnbG9iYWwgb25lLCB0aGVuIGl0IGNvdWxkIGJlIGEKdmVudWUgZm9y IGluZm9ybWF0aW9uIGxlYWtzIGJldHdlZW4gZmlsZSBjb250ZXh0cywgd2hpY2ggc2hvdWxkIG5l dmVyCmhhcHBlbiBpbiBEUk0uCgpBcyBhIHNpZGUgbm90ZSwgY2FyZSB3YXMgcHV0IHRvIGFkanVz dCBkdW1teSBCTyBvZmZzZXRzIGZvciBzcGFyc2UgbWFwcGluZ3MKc28gdGhhdCBhbGwgYWRkcmVz c2VzIGluIHRoZSBuZXcgVkEgYXJlIG1hcHBlZCBhbGlnbmVkIGFnYWluc3QgaXQuCgpTaWduZWQt b2ZmLWJ5OiBBZHJpw6FuIExhcnVtYmUgPGFkcmlhbi5sYXJ1bWJlQGNvbGxhYm9yYS5jb20+Ci0t LQogZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9nZW0uYyB8ICAxOCArKysKIGRyaXZl cnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmggfCAgIDIgKwogZHJpdmVycy9ncHUvZHJt L3BhbnRob3IvcGFudGhvcl9tbXUuYyB8IDE5NSArKysrKysrKysrKysrKysrKysrKysrLS0tLQog aW5jbHVkZS91YXBpL2RybS9wYW50aG9yX2RybS5oICAgICAgICB8ICAxMiArKwogNCBmaWxlcyBj aGFuZ2VkLCAyMDEgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9w YW50aG9yL3BhbnRob3JfZ2VtLmMKaW5kZXggMTMyOTVkN2E1OTNkLi5jNzk4YWMyOTYzZTEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9nZW0uYwpAQCAtMTM0NSw2ICsxMzQ1LDI0IEBA IHBhbnRob3Jfa2VybmVsX2JvX2NyZWF0ZShzdHJ1Y3QgcGFudGhvcl9kZXZpY2UgKnB0ZGV2LCBz dHJ1Y3QgcGFudGhvcl92bSAqdm0sCiAJcmV0dXJuIEVSUl9QVFIocmV0KTsKIH0KIAorLyoqCisg KiBwYW50aG9yX2R1bW15X2JvX2NyZWF0ZSgpIC0gQ3JlYXRlIGEgUGFudGhvciBCTyBtZWFudCB0 byBiYWNrIHNwYXJzZSBiaW5kaW5ncy4KKyAqIEBwdGRldjogRGV2aWNlLgorICoKKyAqIFJldHVy bjogQSB2YWxpZCBwb2ludGVyIGluIGNhc2Ugb2Ygc3VjY2VzcywgYW4gRVJSX1BUUigpIG90aGVy d2lzZS4KKyAqLworc3RydWN0IHBhbnRob3JfZ2VtX29iamVjdCAqCitwYW50aG9yX2R1bW15X2Jv X2NyZWF0ZShzdHJ1Y3QgcGFudGhvcl9kZXZpY2UgKnB0ZGV2KQoreworCS8qIFNpbmNlIGV2ZW4g d2hlbiB0aGUgRFJNIGRldmljZSdzIG1vdW50IHBvaW50IGhhcyBlbmFibGVkIFRIUCB3ZSBoYXZl IG5vIGd1YXJhbnRlZQorCSAqIHRoYXQgZHJtX2dlbV9nZXRfcGFnZXMoKSB3aWxsIHJldHVybiBh IHNpbmdsZSAyTWlCIFBNRCwgYW5kIGFsc28gd2UgY2Fubm90IGJlIHN1cmUKKwkgKiB0aGF0IHRo ZSAyTWlCIHdvbid0IGJlIHJlY2xhaW1lZCBhbmQgcmUtYWxsb2NhdGVkIGxhdGVyIG9uIGFzIDRL aUIgY2h1bmtzLCBpdCBkb2Vzbid0CisJICogbWFrZSBzZW5zZSB0byBwcmUtcG9wdWxhdGUgdGhp cyBvYmplY3QncyBwYWdlIGFycmF5LCBub3IgdG8gZmFsbCBiYWNrIG9uIGEgQk8gc2l6ZQorCSAq IG9mIDRLaUIuIFN0aWNraW5nIHRvIGEgZHVtbXkgb2JqZWN0IHNpemUgb2YgMk1pQiBsZXRzIHVz IGtlZXAgdGhpbmdzIHNpbXBsZSBmb3Igbm93LgorCSAqLworCXJldHVybiBwYW50aG9yX2dlbV9j cmVhdGUoJnB0ZGV2LT5iYXNlLCBTWl8yTSwgRFJNX1BBTlRIT1JfQk9fTk9fTU1BUCwgTlVMTCwg MCk7Cit9CisKIHN0YXRpYyBib29sIGNhbl9zd2FwKHZvaWQpCiB7CiAJcmV0dXJuIGdldF9ucl9z d2FwX3BhZ2VzKCkgPiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFu dGhvcl9nZW0uaCBiL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmgKaW5kZXgg YWUwNDkxZDBiMTIxLi44NjM5YzJmYTA4ZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9w YW50aG9yL3BhbnRob3JfZ2VtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhv cl9nZW0uaApAQCAtMzE1LDYgKzMxNSw4IEBAIHBhbnRob3Jfa2VybmVsX2JvX2NyZWF0ZShzdHJ1 Y3QgcGFudGhvcl9kZXZpY2UgKnB0ZGV2LCBzdHJ1Y3QgcGFudGhvcl92bSAqdm0sCiAKIHZvaWQg cGFudGhvcl9rZXJuZWxfYm9fZGVzdHJveShzdHJ1Y3QgcGFudGhvcl9rZXJuZWxfYm8gKmJvKTsK IAorc3RydWN0IHBhbnRob3JfZ2VtX29iamVjdCAqcGFudGhvcl9kdW1teV9ib19jcmVhdGUoc3Ry dWN0IHBhbnRob3JfZGV2aWNlICpwdGRldik7CisKICNpZmRlZiBDT05GSUdfREVCVUdfRlMKIHZv aWQgcGFudGhvcl9nZW1fZGVidWdmc19pbml0KHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKTsKICNl bmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9tbXUuYyBi L2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfbW11LmMKaW5kZXggY2E3ODI2N2Q0M2U5 Li4xOGIxNTYxNzJjYzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRo b3JfbW11LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9tbXUuYwpAQCAt MTE2LDYgKzExNiwxNyBAQCBzdHJ1Y3QgcGFudGhvcl9tbXUgewogc3RydWN0IHBhbnRob3Jfdm1f cG9vbCB7CiAJLyoqIEB4YTogQXJyYXkgdXNlZCBmb3IgVk0gaGFuZGxlIHRyYWNraW5nLiAqLwog CXN0cnVjdCB4YXJyYXkgeGE7CisKKwkvKioKKwkgKiBAZHVtbXk6IER1bW15IG9iamVjdCB1c2Vk IGZvciBzcGFyc2UgbWFwcGluZ3MKKwkgKgorCSAqIFNwYXJzZSBiaW5kaW5ncyBtYXAgdmlydHVh bCBhZGRyZXNzIHJhbmdlcyBvbnRvIGEgZHVtbXkKKwkgKiBCTyBpbiBhIG1vZHVsbyBmYXNoaW9u LiBFdmVuIHRob3VnaCBzcGFyc2Ugd3JpdGVzIGFyZSBtZWFudAorCSAqIHRvIGJlIGRpc2NhcmRl ZCBhbmQgcmVhZHMgdW5kZWZpbmVkLCB3cml0ZXMgYXJlIHN0aWxsIHJlZmxlY3RlZAorCSAqIGlu IHRoZSBkdW1teSBidWZmZXIuIFRoYXQgbWVhbnMgd2UgbXVzdCBrZWVwIGEgZHVtbXkgb2JqZWN0 IHBlcgorCSAqIGZpbGUgY29udGV4dCwgdG8gYXZvaWQgZGF0YSBsZWFrcyBiZXR3ZWVuIHRoZW0u CisJICovCisJc3RydWN0IHBhbnRob3JfZ2VtX29iamVjdCAqZHVtbXk7CiB9OwogCiAvKioKQEAg LTM5NSw2ICs0MDYsMTUgQEAgc3RydWN0IHBhbnRob3Jfdm0gewogCQkgKi8KIAkJc3RydWN0IGxp c3RfaGVhZCBscnVfbm9kZTsKIAl9IHJlY2xhaW07CisKKwkvKioKKwkgKiBAZHVtbXk6IER1bW15 IG9iamVjdCB1c2VkIGZvciBzcGFyc2UgbWFwcGluZ3MuCisJICoKKwkgKiBWTSdzIG11c3Qga2Vl cCBhIHJlZmVyZW5jZSB0byB0aGUgZmlsZSBjb250ZXh0LXdpZGUgZHVtbXkgQk8gYmVjYXVzZQor CSAqIHRoZXkgY2FuIG91dGxpdmUgdGhlIGZpbGUgY29udGV4dCwgd2hpY2ggaW5jbHVkZXMgdGhl IFZNIHBvb2wgaG9sZGluZworCSAqIHRoZSBvcmlnaW5hbCBkdW1teSBCTyByZWZlcmVuY2UuCisJ ICovCisJc3RydWN0IHBhbnRob3JfZ2VtX29iamVjdCAqZHVtbXk7CiB9OwogCiAvKioKQEAgLTEw MjcsNiArMTA0NywzMCBAQCBwYW50aG9yX3ZtX21hcF9wYWdlcyhzdHJ1Y3QgcGFudGhvcl92bSAq dm0sIHU2NCBpb3ZhLCBpbnQgcHJvdCwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludAorcGFu dGhvcl92bV9tYXBfc3BhcnNlKHN0cnVjdCBwYW50aG9yX3ZtICp2bSwgdTY0IGlvdmEsIGludCBw cm90LAorCQkgICAgICBzdHJ1Y3Qgc2dfdGFibGUgKnNndCwgdTY0IHNpemUpCit7CisJdTY0IG1h cHBlZCA9IDA7CisJaW50IHJldDsKKworCXdoaWxlIChtYXBwZWQgPCBzaXplKSB7CisJCXU2NCBh ZGRyID0gaW92YSArIG1hcHBlZDsKKwkJdTMyIGNodW5rX3NpemUgPSBtaW4oc2l6ZSAtIG1hcHBl ZCwgU1pfMk0gLSAoYWRkciAmIChTWl8yTSAtIDEpKSk7CisKKwkJcmV0ID0gcGFudGhvcl92bV9t YXBfcGFnZXModm0sIGFkZHIsIHByb3QsIHNndCwKKwkJCQkJICAgYWRkciAlIFNaXzJNLCBjaHVu a19zaXplKTsKKwkJaWYgKHJldCkgeworCQkJcGFudGhvcl92bV91bm1hcF9wYWdlcyh2bSwgaW92 YSwgbWFwcGVkKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKworCQltYXBwZWQgKz0gY2h1bmtfc2l6 ZTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBmbGFnc190b19wcm90KHUzMiBm bGFncykKIHsKIAlpbnQgcHJvdCA9IDA7CkBAIC0xMjY5LDYgKzEzMTMsNyBAQCBzdGF0aWMgaW50 IHBhbnRob3Jfdm1fb3BfY3R4X3ByZWFsbG9jX3B0cyhzdHJ1Y3QgcGFudGhvcl92bV9vcF9jdHgg Km9wX2N0eCkKIAkoRFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfUkVBRE9OTFkgfCBcCiAJIERS TV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX05PRVhFQyB8IFwKIAkgRFJNX1BBTlRIT1JfVk1fQklO RF9PUF9NQVBfVU5DQUNIRUQgfCBcCisJIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX1NQQVJT RSB8IFwKIAkgRFJNX1BBTlRIT1JfVk1fQklORF9PUF9UWVBFX01BU0spCiAKIHN0YXRpYyBpbnQg cGFudGhvcl92bV9wcmVwYXJlX21hcF9vcF9jdHgoc3RydWN0IHBhbnRob3Jfdm1fb3BfY3R4ICpv cF9jdHgsCkBAIC0xMjc2LDYgKzEzMjEsNyBAQCBzdGF0aWMgaW50IHBhbnRob3Jfdm1fcHJlcGFy ZV9tYXBfb3BfY3R4KHN0cnVjdCBwYW50aG9yX3ZtX29wX2N0eCAqb3BfY3R4LAogCQkJCQkgc3Ry dWN0IHBhbnRob3JfZ2VtX29iamVjdCAqYm8sCiAJCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX3BhbnRo b3Jfdm1fYmluZF9vcCAqb3ApCiB7CisJYm9vbCBpc19zcGFyc2UgPSBvcC0+ZmxhZ3MgJiBEUk1f UEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFSU0U7CiAJc3RydWN0IGRybV9ncHV2bV9ibyAqcHJl YWxsb2NhdGVkX3ZtX2JvOwogCXN0cnVjdCBzZ190YWJsZSAqc2d0ID0gTlVMTDsKIAlpbnQgcmV0 OwpAQCAtMTI4Nyw4ICsxMzMzLDIxIEBAIHN0YXRpYyBpbnQgcGFudGhvcl92bV9wcmVwYXJlX21h cF9vcF9jdHgoc3RydWN0IHBhbnRob3Jfdm1fb3BfY3R4ICpvcF9jdHgsCiAJICAgIChvcC0+Zmxh Z3MgJiBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX1RZUEVfTUFTSykgIT0gRFJNX1BBTlRIT1JfVk1f QklORF9PUF9UWVBFX01BUCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQkvKiBNYWtlIHN1cmUgdGhl IFZBIGFuZCBzaXplIGFyZSBpbi1ib3VuZHMuICovCi0JaWYgKG9wLT5zaXplID4gYm8tPmJhc2Uu c2l6ZSB8fCBvcC0+Ym9fb2Zmc2V0ID4gYm8tPmJhc2Uuc2l6ZSAtIG9wLT5zaXplKQorCS8qIHVB UEkgbWFuZGF0ZXMgc3BhcnNlbHkgYm91bmQgcmVnaW9ucyBtdXN0IG5vdCBiZSBleGVjdXRhYmxl LiAqLworCWlmIChpc19zcGFyc2UgJiYgIShvcC0+ZmxhZ3MgJiBEUk1fUEFOVEhPUl9WTV9CSU5E X09QX01BUF9OT0VYRUMpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIEZvciBub24tc3BhcnNl LCBtYWtlIHN1cmUgdGhlIFZBIGFuZCBzaXplIGFyZSBpbi1ib3VuZHMuCisJICogRm9yIHNwYXJz ZSwgdGhpcyBpcyBub3QgYXBwbGljYWJsZSwgYmVjYXVzZSB0aGUgZHVtbXkgQk8gaXMKKwkgKiBy ZXBlYXRlZGx5IG1hcHBlZCBvdmVyIGEgcG90ZW50aWFsbHkgd2lkZXIgVkEgcmFuZ2UuCisJICov CisJaWYgKCFpc19zcGFyc2UgJiYgKG9wLT5zaXplID4gYm8tPmJhc2Uuc2l6ZSB8fCBvcC0+Ym9f b2Zmc2V0ID4gYm8tPmJhc2Uuc2l6ZSAtIG9wLT5zaXplKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwkvKiBGb3Igc3BhcnNlLCB3ZSBkb24ndCBleHBlY3QgYW55IHVzZXIgQk8sIHRoZSBCTyB3ZSBn ZXQgcGFzc2VkCisJICogaXMgdGhlIGR1bW15IEJPIGF0dGFjaGVkIHRvIHRoZSBWTSBwb29sLgor CSAqLworCWlmIChpc19zcGFyc2UgJiYgKG9wLT5ib19oYW5kbGUgfHwgb3AtPmJvX29mZnNldCkp CiAJCXJldHVybiAtRUlOVkFMOwogCiAJLyogSWYgdGhlIEJPIGhhcyBhbiBleGNsdXNpdmUgVk0g YXR0YWNoZWQsIGl0IGNhbid0IGJlIG1hcHBlZCB0byBvdGhlciBWTXMuICovCkBAIC0xNDM3LDcg KzE0OTYsOSBAQCBwYW50aG9yX3ZtX2dldF9ib19mb3JfdmEoc3RydWN0IHBhbnRob3Jfdm0gKnZt LCB1NjQgdmEsIHU2NCAqYm9fb2Zmc2V0KQogCWlmICh2bWEgJiYgdm1hLT5iYXNlLmdlbS5vYmop IHsKIAkJZHJtX2dlbV9vYmplY3RfZ2V0KHZtYS0+YmFzZS5nZW0ub2JqKTsKIAkJYm8gPSB0b19w YW50aG9yX2JvKHZtYS0+YmFzZS5nZW0ub2JqKTsKLQkJKmJvX29mZnNldCA9IHZtYS0+YmFzZS5n ZW0ub2Zmc2V0ICsgKHZhIC0gdm1hLT5iYXNlLnZhLmFkZHIpOworCQkqYm9fb2Zmc2V0ID0gISh2 bWEtPmZsYWdzICYgRFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfU1BBUlNFKSA/CisJCQl2bWEt PmJhc2UuZ2VtLm9mZnNldCArICh2YSAtIHZtYS0+YmFzZS52YS5hZGRyKSA6CisJCQl2YSAmIChT Wl8yTSAtIDEpOwogCX0KIAltdXRleF91bmxvY2soJnZtLT5vcF9sb2NrKTsKIApAQCAtMTU0Miw2 ICsxNjAzLDkgQEAgaW50IHBhbnRob3Jfdm1fcG9vbF9jcmVhdGVfdm0oc3RydWN0IHBhbnRob3Jf ZGV2aWNlICpwdGRldiwKIAlpZiAoSVNfRVJSKHZtKSkKIAkJcmV0dXJuIFBUUl9FUlIodm0pOwog CisJZHJtX2dlbV9vYmplY3RfZ2V0KCZwb29sLT5kdW1teS0+YmFzZSk7CisJdm0tPmR1bW15ID0g cG9vbC0+ZHVtbXk7CisKIAlyZXQgPSB4YV9hbGxvYygmcG9vbC0+eGEsICZpZCwgdm0sCiAJCSAg ICAgICBYQV9MSU1JVCgxLCBQQU5USE9SX01BWF9WTVNfUEVSX0ZJTEUpLCBHRlBfS0VSTkVMKTsK IApAQCAtMTY0MSw2ICsxNzA1LDggQEAgdm9pZCBwYW50aG9yX3ZtX3Bvb2xfZGVzdHJveShzdHJ1 Y3QgcGFudGhvcl9maWxlICpwZmlsZSkKIAl4YV9mb3JfZWFjaCgmcGZpbGUtPnZtcy0+eGEsIGks IHZtKQogCQlwYW50aG9yX3ZtX2Rlc3Ryb3kodm0pOwogCisJaWYgKHBmaWxlLT52bXMtPmR1bW15 KQorCQlkcm1fZ2VtX29iamVjdF9wdXQoJnBmaWxlLT52bXMtPmR1bW15LT5iYXNlKTsKIAl4YV9k ZXN0cm95KCZwZmlsZS0+dm1zLT54YSk7CiAJa2ZyZWUocGZpbGUtPnZtcyk7CiB9CkBAIC0xNjUz LDEyICsxNzE5LDI4IEBAIHZvaWQgcGFudGhvcl92bV9wb29sX2Rlc3Ryb3koc3RydWN0IHBhbnRo b3JfZmlsZSAqcGZpbGUpCiAgKi8KIGludCBwYW50aG9yX3ZtX3Bvb2xfY3JlYXRlKHN0cnVjdCBw YW50aG9yX2ZpbGUgKnBmaWxlKQogeworCXN0cnVjdCBwYW50aG9yX2dlbV9vYmplY3QgKmR1bW15 OworCWludCByZXQ7CisKIAlwZmlsZS0+dm1zID0ga3phbGxvY19vYmooKnBmaWxlLT52bXMpOwog CWlmICghcGZpbGUtPnZtcykKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAl4YV9pbml0X2ZsYWdzKCZw ZmlsZS0+dm1zLT54YSwgWEFfRkxBR1NfQUxMT0MxKTsKKworCWR1bW15ID0gcGFudGhvcl9kdW1t eV9ib19jcmVhdGUocGZpbGUtPnB0ZGV2KTsKKwlpZiAoSVNfRVJSKGR1bW15KSkgeworCQlyZXQg PSBQVFJfRVJSKGR1bW15KTsKKwkJZ290byBlcnJfZGVzdHJveV92bV9wb29sOworCX0KKworCXBm aWxlLT52bXMtPmR1bW15ID0gZHVtbXk7CisKIAlyZXR1cm4gMDsKKworZXJyX2Rlc3Ryb3lfdm1f cG9vbDoKKwlwYW50aG9yX3ZtX3Bvb2xfZGVzdHJveShwZmlsZSk7CisJcmV0dXJuIHJldDsKIH0K IAogLyogZHVtbXkgVExCIG9wcywgdGhlIHJlYWwgVExCIGZsdXNoIGhhcHBlbnMgaW4gcGFudGhv cl92bV9mbHVzaF9yYW5nZSgpICovCkBAIC0xOTk1LDYgKzIwNzcsOSBAQCBzdGF0aWMgdm9pZCBw YW50aG9yX3ZtX2ZyZWUoc3RydWN0IGRybV9ncHV2bSAqZ3B1dm0pCiAKIAlmcmVlX2lvX3BndGFi bGVfb3BzKHZtLT5wZ3RibF9vcHMpOwogCisJaWYgKHZtLT5kdW1teSkKKwkJZHJtX2dlbV9vYmpl Y3RfcHV0KCZ2bS0+ZHVtbXktPmJhc2UpOworCiAJZHJtX21tX3Rha2Vkb3duKCZ2bS0+bW0pOwog CWtmcmVlKHZtKTsKIH0KQEAgLTIxNTQsNyArMjIzOSwzMCBAQCBzdGF0aWMgdm9pZCBwYW50aG9y X3ZtYV9pbml0KHN0cnVjdCBwYW50aG9yX3ZtYSAqdm1hLCB1MzIgZmxhZ3MpCiAjZGVmaW5lIFBB TlRIT1JfVk1fTUFQX0ZMQUdTIFwKIAkoRFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfUkVBRE9O TFkgfCBcCiAJIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX05PRVhFQyB8IFwKLQkgRFJNX1BB TlRIT1JfVk1fQklORF9PUF9NQVBfVU5DQUNIRUQpCisJIERSTV9QQU5USE9SX1ZNX0JJTkRfT1Bf TUFQX1VOQ0FDSEVEIHwgXAorCSBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFSU0UpCisK K3N0YXRpYyB2b2lkCitwYW50aG9yX2ZpeF9zcGFyc2VfbWFwX29mZnNldChzdHJ1Y3QgZHJtX2dw dXZhX29wX21hcCAqb3AsIHUzMiBmbGFncykKK3sKKwlpZiAob3AgJiYgKGZsYWdzICYgRFJNX1BB TlRIT1JfVk1fQklORF9PUF9NQVBfU1BBUlNFKSkKKwkJb3AtPmdlbS5vZmZzZXQgPSBvcC0+dmEu YWRkciAmIChTWl8yTSAtIDEpOworfQorCitzdGF0aWMgaW50CitwYW50aG9yX3ZtX2V4ZWNfbWFw X29wKHN0cnVjdCBwYW50aG9yX3ZtICp2bSwgdTMyIGZsYWdzLAorCQkgICAgICAgY29uc3Qgc3Ry dWN0IGRybV9ncHV2YV9vcF9tYXAgKm9wKQoreworCXN0cnVjdCBwYW50aG9yX2dlbV9vYmplY3Qg KmJvID0gdG9fcGFudGhvcl9ibyhvcC0+Z2VtLm9iaik7CisJaW50IHByb3QgPSBmbGFnc190b19w cm90KGZsYWdzKTsKKworCWlmIChmbGFncyAmIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX1NQ QVJTRSkKKwkJcmV0dXJuIHBhbnRob3Jfdm1fbWFwX3NwYXJzZSh2bSwgb3AtPnZhLmFkZHIsIHBy b3QsCisJCQkJCSAgICAgYm8tPmRtYXAuc2d0LCBvcC0+dmEucmFuZ2UpOworCisJcmV0dXJuIHBh bnRob3Jfdm1fbWFwX3BhZ2VzKHZtLCBvcC0+dmEuYWRkciwgcHJvdCwgYm8tPmRtYXAuc2d0LAor CQkJCSAgICBvcC0+Z2VtLm9mZnNldCwgb3AtPnZhLnJhbmdlKTsKK30KIAogc3RhdGljIGludCBw YW50aG9yX2dwdXZhX3NtX3N0ZXBfbWFwKHN0cnVjdCBkcm1fZ3B1dmFfb3AgKm9wLCB2b2lkICpw cml2KQogewpAQCAtMjE2NywxMCArMjI3NSw5IEBAIHN0YXRpYyBpbnQgcGFudGhvcl9ncHV2YV9z bV9zdGVwX21hcChzdHJ1Y3QgZHJtX2dwdXZhX29wICpvcCwgdm9pZCAqcHJpdikKIAkJcmV0dXJu IC1FSU5WQUw7CiAKIAlwYW50aG9yX3ZtYV9pbml0KHZtYSwgb3BfY3R4LT5mbGFncyAmIFBBTlRI T1JfVk1fTUFQX0ZMQUdTKTsKKwlwYW50aG9yX2ZpeF9zcGFyc2VfbWFwX29mZnNldCgmb3AtPm1h cCwgdm1hLT5mbGFncyk7CiAKLQlyZXQgPSBwYW50aG9yX3ZtX21hcF9wYWdlcyh2bSwgb3AtPm1h cC52YS5hZGRyLCBmbGFnc190b19wcm90KHZtYS0+ZmxhZ3MpLAotCQkJCSAgIG9wX2N0eC0+bWFw LmJvLT5kbWFwLnNndCwgb3AtPm1hcC5nZW0ub2Zmc2V0LAotCQkJCSAgIG9wLT5tYXAudmEucmFu Z2UpOworCXJldCA9IHBhbnRob3Jfdm1fZXhlY19tYXBfb3Aodm0sIHZtYS0+ZmxhZ3MsICZvcC0+ bWFwKTsKIAlpZiAocmV0KSB7CiAJCXBhbnRob3Jfdm1fb3BfY3R4X3JldHVybl92bWEob3BfY3R4 LCB2bWEpOwogCQlyZXR1cm4gcmV0OwpAQCAtMjIwMiw2ICsyMzA5LDggQEAgc3RhdGljIHZvaWQK IHVubWFwX2h1Z2VwYWdlX2FsaWduKGNvbnN0IHN0cnVjdCBkcm1fZ3B1dmFfb3BfcmVtYXAgKm9w LAogCQkgICAgIHU2NCAqdW5tYXBfc3RhcnQsIHU2NCAqdW5tYXBfcmFuZ2UpCiB7CisJc3RydWN0 IHBhbnRob3Jfdm1hICp1bm1hcF92bWEgPSBjb250YWluZXJfb2Yob3AtPnVubWFwLT52YSwgc3Ry dWN0IHBhbnRob3Jfdm1hLCBiYXNlKTsKKwlib29sIGlzX3NwYXJzZSA9IHVubWFwX3ZtYS0+Zmxh Z3MgJiBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFSU0U7CiAJdTY0IGFsaWduZWRfdW5t YXBfc3RhcnQsIGFsaWduZWRfdW5tYXBfZW5kLCB1bm1hcF9lbmQ7CiAKIAl1bm1hcF9lbmQgPSAq dW5tYXBfc3RhcnQgKyAqdW5tYXBfcmFuZ2U7CkBAIC0yMjA5LDExICsyMzE4LDE1IEBAIHVubWFw X2h1Z2VwYWdlX2FsaWduKGNvbnN0IHN0cnVjdCBkcm1fZ3B1dmFfb3BfcmVtYXAgKm9wLAogCWFs aWduZWRfdW5tYXBfZW5kID0gQUxJR04odW5tYXBfZW5kLCBTWl8yTSk7CiAKIAkvKiBJZiB3ZSdy ZSBkZWFsaW5nIHdpdGggYSBodWdlIHBhZ2UsIG1ha2Ugc3VyZSB0aGUgdW5tYXAgcmVnaW9uIGlz Ci0JICogYWxpZ25lZCBvbiB0aGUgc3RhcnQgb2YgdGhlIHBhZ2UuCisJICogYWxpZ25lZCBvbiB0 aGUgc3RhcnQgb2YgdGhlIHBhZ2UuIElmIHRoZSB1bm1hcHBlZCBWTUEgc3RhbmRzIGZvcgorCSAq IGEgc3BhcnNlIG1hcHBpbmcsIGFsd2F5cyBhc3N1bWUgdGhlIGJhY2tpbmcgc3RvcmFnZSBpcyBh IFRIUCwgc2luY2UKKwkgKiB0aGUgb3ZlcmhlYWQgb2YgdW5tYXBwaW5nIDJNaUIgd29ydGggb2Yg NEtpQiBwYWdlcyBhbmQgcmVtYXBwaW5nCisJICogc29tZSBvZiB0aGVtIGlzIG9mZnNldCBieSB0 aGUgbG9naWMgb2Ygd29ya2luZyBvdXQgd2hldGhlciBpdCdzCisJICogdGhlIG9wcG9zaXRlIGNh c2UgcmlnaHQgYmVsb3cuIFRoaXMgYWxzbyBob2xkcyB0cnVlIGZvciBvcC0+bmV4dC4KIAkgKi8K IAlpZiAob3AtPnByZXYgJiYgYWxpZ25lZF91bm1hcF9zdGFydCA8ICp1bm1hcF9zdGFydCAmJgog CSAgICBvcC0+cHJldi0+dmEuYWRkciA8PSBhbGlnbmVkX3VubWFwX3N0YXJ0ICYmCi0JICAgIGlv dmFfbWFwcGVkX2FzX2h1Z2VfcGFnZShvcC0+cHJldiwgKnVubWFwX3N0YXJ0KSkgeworCSAgICAo aXNfc3BhcnNlIHx8IGlvdmFfbWFwcGVkX2FzX2h1Z2VfcGFnZShvcC0+cHJldiwgKnVubWFwX3N0 YXJ0KSkpIHsKIAkJKnVubWFwX3JhbmdlICs9ICp1bm1hcF9zdGFydCAtIGFsaWduZWRfdW5tYXBf c3RhcnQ7CiAJCSp1bm1hcF9zdGFydCA9IGFsaWduZWRfdW5tYXBfc3RhcnQ7CiAJfQpAQCAtMjIy Myw3ICsyMzM2LDcgQEAgdW5tYXBfaHVnZXBhZ2VfYWxpZ24oY29uc3Qgc3RydWN0IGRybV9ncHV2 YV9vcF9yZW1hcCAqb3AsCiAJICovCiAJaWYgKG9wLT5uZXh0ICYmIGFsaWduZWRfdW5tYXBfZW5k ID4gdW5tYXBfZW5kICYmCiAJICAgIG9wLT5uZXh0LT52YS5hZGRyICsgb3AtPm5leHQtPnZhLnJh bmdlID49IGFsaWduZWRfdW5tYXBfZW5kICYmCi0JICAgIGlvdmFfbWFwcGVkX2FzX2h1Z2VfcGFn ZShvcC0+bmV4dCwgdW5tYXBfZW5kIC0gMSkpIHsKKwkgICAgKGlzX3NwYXJzZSB8fCBpb3ZhX21h cHBlZF9hc19odWdlX3BhZ2Uob3AtPm5leHQsIHVubWFwX2VuZCAtIDEpKSkgewogCQkqdW5tYXBf cmFuZ2UgKz0gYWxpZ25lZF91bm1hcF9lbmQgLSB1bm1hcF9lbmQ7CiAJfQogfQpAQCAtMjI0MCw2 ICsyMzUzLDExIEBAIHN0YXRpYyBpbnQgcGFudGhvcl9ncHV2YV9zbV9zdGVwX3JlbWFwKHN0cnVj dCBkcm1fZ3B1dmFfb3AgKm9wLAogCiAJZHJtX2dwdXZhX29wX3JlbWFwX3RvX3VubWFwX3Jhbmdl KCZvcC0+cmVtYXAsICZ1bm1hcF9zdGFydCwgJnVubWFwX3JhbmdlKTsKIAorCS8qIG9wLT5yZW1h cC5wcmV2J3MgQk8gb2Zmc2V0IGlzIGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUgdW5tYXAgdmEncywg YnV0CisJICogdGhhdCBvZiBvcC0+cmVtYXAubmV4dCBtdXN0IGJlIGFkanVzdGVkIHNvIGFzIHRv IHJlbWFpbiA8IFNaXzJNCisJICovCisJcGFudGhvcl9maXhfc3BhcnNlX21hcF9vZmZzZXQob3At PnJlbWFwLm5leHQsIHVubWFwX3ZtYS0+ZmxhZ3MpOworCiAJLyoKIAkgKiBBUk0gSU9NTVUgcGFn ZSB0YWJsZSBtYW5hZ2VtZW50IGNvZGUgZGlzYWxsb3dzIHBhcnRpYWwgdW5tYXBzIG9mIGh1Z2Ug cGFnZXMsCiAJICogc28gd2hlbiBhIHBhcnRpYWwgdW5tYXAgaXMgcmVxdWVzdGVkLCB3ZSBtdXN0 IGZpcnN0IHVubWFwIHRoZSBlbnRpcmUgaHVnZQpAQCAtMjI1OSwxNCArMjM3NywxOSBAQCBzdGF0 aWMgaW50IHBhbnRob3JfZ3B1dmFfc21fc3RlcF9yZW1hcChzdHJ1Y3QgZHJtX2dwdXZhX29wICpv cCwKIAl9CiAKIAlpZiAob3AtPnJlbWFwLnByZXYpIHsKLQkJc3RydWN0IHBhbnRob3JfZ2VtX29i amVjdCAqYm8gPSB0b19wYW50aG9yX2JvKG9wLT5yZW1hcC5wcmV2LT5nZW0ub2JqKTsKIAkJdTY0 IG9mZnNldCA9IG9wLT5yZW1hcC5wcmV2LT5nZW0ub2Zmc2V0ICsgdW5tYXBfc3RhcnQgLSBvcC0+ cmVtYXAucHJldi0+dmEuYWRkcjsKIAkJdTY0IHNpemUgPSBvcC0+cmVtYXAucHJldi0+dmEuYWRk ciArIG9wLT5yZW1hcC5wcmV2LT52YS5yYW5nZSAtIHVubWFwX3N0YXJ0OwogCi0JCWlmICghdW5t YXBfdm1hLT5ldmljdGVkKSB7Ci0JCQlyZXQgPSBwYW50aG9yX3ZtX21hcF9wYWdlcyh2bSwgdW5t YXBfc3RhcnQsCi0JCQkJCQkgICBmbGFnc190b19wcm90KHVubWFwX3ZtYS0+ZmxhZ3MpLAotCQkJ CQkJICAgYm8tPmRtYXAuc2d0LCBvZmZzZXQsIHNpemUpOworCQlpZiAoIXVubWFwX3ZtYS0+ZXZp Y3RlZCAmJiBzaXplID4gMCkgeworCQkJc3RydWN0IGRybV9ncHV2YV9vcF9tYXAgbWFwX29wID0g eworCQkJCS52YS5hZGRyID0gdW5tYXBfc3RhcnQsCisJCQkJLnZhLnJhbmdlID0gc2l6ZSwKKwkJ CQkuZ2VtLm9iaiA9IG9wLT5yZW1hcC5wcmV2LT5nZW0ub2JqLAorCQkJCS5nZW0ub2Zmc2V0ID0g b2Zmc2V0LAorCQkJfTsKKwkJCXBhbnRob3JfZml4X3NwYXJzZV9tYXBfb2Zmc2V0KCZtYXBfb3As IHVubWFwX3ZtYS0+ZmxhZ3MpOworCisJCQlyZXQgPSBwYW50aG9yX3ZtX2V4ZWNfbWFwX29wKHZt LCB1bm1hcF92bWEtPmZsYWdzLCAmbWFwX29wKTsKIAkJCWlmIChyZXQpCiAJCQkJcmV0dXJuIHJl dDsKIAkJfQpAQCAtMjI3NywxNCArMjQwMCwxOSBAQCBzdGF0aWMgaW50IHBhbnRob3JfZ3B1dmFf c21fc3RlcF9yZW1hcChzdHJ1Y3QgZHJtX2dwdXZhX29wICpvcCwKIAl9CiAKIAlpZiAob3AtPnJl bWFwLm5leHQpIHsKLQkJc3RydWN0IHBhbnRob3JfZ2VtX29iamVjdCAqYm8gPSB0b19wYW50aG9y X2JvKG9wLT5yZW1hcC5uZXh0LT5nZW0ub2JqKTsKIAkJdTY0IGFkZHIgPSBvcC0+cmVtYXAubmV4 dC0+dmEuYWRkcjsKIAkJdTY0IHNpemUgPSB1bm1hcF9zdGFydCArIHVubWFwX3JhbmdlIC0gb3At PnJlbWFwLm5leHQtPnZhLmFkZHI7CiAKLQkJaWYgKCF1bm1hcF92bWEtPmV2aWN0ZWQpIHsKLQkJ CXJldCA9IHBhbnRob3Jfdm1fbWFwX3BhZ2VzKHZtLCBhZGRyLCBmbGFnc190b19wcm90KHVubWFw X3ZtYS0+ZmxhZ3MpLAotCQkJCQkJICAgYm8tPmRtYXAuc2d0LCBvcC0+cmVtYXAubmV4dC0+Z2Vt Lm9mZnNldCwKLQkJCQkJCSAgIHNpemUpOworCQlpZiAoIXVubWFwX3ZtYS0+ZXZpY3RlZCAmJiBz aXplID4gMCkgeworCQkJc3RydWN0IGRybV9ncHV2YV9vcF9tYXAgbWFwX29wID0geworCQkJCS52 YS5hZGRyID0gYWRkciwKKwkJCQkudmEucmFuZ2UgPSBzaXplLAorCQkJCS5nZW0ub2JqID0gb3At PnJlbWFwLm5leHQtPmdlbS5vYmosCisJCQkJLmdlbS5vZmZzZXQgPSBvcC0+cmVtYXAubmV4dC0+ Z2VtLm9mZnNldCwKKwkJCX07CisJCQlwYW50aG9yX2ZpeF9zcGFyc2VfbWFwX29mZnNldCgmbWFw X29wLCB1bm1hcF92bWEtPmZsYWdzKTsKKworCQkJcmV0ID0gcGFudGhvcl92bV9leGVjX21hcF9v cCh2bSwgdW5tYXBfdm1hLT5mbGFncywgJm1hcF9vcCk7CiAJCQlpZiAocmV0KQogCQkJCXJldHVy biByZXQ7CiAJCX0KQEAgLTI0ODEsMTEgKzI2MDksMTcgQEAgc3RhdGljIGludCByZW1hcF9ldmlj dGVkX3ZtYShzdHJ1Y3QgZHJtX2dwdXZtX2JvICp2bV9ibywKIAkJcmV0ID0gcGFudGhvcl92bV9s b2NrX3JlZ2lvbih2bSwgZXZpY3RlZF92bWEtPmJhc2UudmEuYWRkciwKIAkJCQkJICAgICBldmlj dGVkX3ZtYS0+YmFzZS52YS5yYW5nZSk7CiAJCWlmICghcmV0KSB7Ci0JCQlyZXQgPSBwYW50aG9y X3ZtX21hcF9wYWdlcyh2bSwgZXZpY3RlZF92bWEtPmJhc2UudmEuYWRkciwKLQkJCQkJCSAgIGZs YWdzX3RvX3Byb3QoZXZpY3RlZF92bWEtPmZsYWdzKSwKLQkJCQkJCSAgIGJvLT5kbWFwLnNndCwK LQkJCQkJCSAgIGV2aWN0ZWRfdm1hLT5iYXNlLmdlbS5vZmZzZXQsCi0JCQkJCQkgICBldmljdGVk X3ZtYS0+YmFzZS52YS5yYW5nZSk7CisJCQlzdHJ1Y3QgZHJtX2dwdXZhX29wX21hcCBtYXBfb3Ag PSB7CisJCQkJLnZhLmFkZHIgPSBldmljdGVkX3ZtYS0+YmFzZS52YS5hZGRyLAorCQkJCS52YS5y YW5nZSA9IGV2aWN0ZWRfdm1hLT5iYXNlLnZhLnJhbmdlLAorCQkJCS5nZW0ub2JqID0gJmJvLT5i YXNlLAorCQkJCS5nZW0ub2Zmc2V0ID0gZXZpY3RlZF92bWEtPmJhc2UuZ2VtLm9mZnNldCwKKwkJ CX07CisJCQlpZiAoZXZpY3RlZF92bWEtPmZsYWdzICYgRFJNX1BBTlRIT1JfVk1fQklORF9PUF9N QVBfU1BBUlNFKQorCQkJCWRybV9XQVJOX09OX09OQ0UoJnZtLT5wdGRldi0+YmFzZSwgbWFwX29w LmdlbS5vZmZzZXQgIT0KKwkJCQkJCSAobWFwX29wLnZhLmFkZHIgJiAoU1pfMk0gLSAxKSkpOwor CisJCQlyZXQgPSBwYW50aG9yX3ZtX2V4ZWNfbWFwX29wKHZtLCBldmljdGVkX3ZtYS0+ZmxhZ3Ms ICZtYXBfb3ApOwogCQkJaWYgKCFyZXQpCiAJCQkJZXZpY3RlZF92bWEtPmV2aWN0ZWQgPSBmYWxz ZTsKIApAQCAtMjg0OSw3ICsyOTgzLDEzIEBAIHBhbnRob3Jfdm1fYmluZF9wcmVwYXJlX29wX2N0 eChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCiAKIAlzd2l0Y2ggKG9wLT5mbGFncyAmIERSTV9QQU5U SE9SX1ZNX0JJTkRfT1BfVFlQRV9NQVNLKSB7CiAJY2FzZSBEUk1fUEFOVEhPUl9WTV9CSU5EX09Q X1RZUEVfTUFQOgotCQlnZW0gPSBkcm1fZ2VtX29iamVjdF9sb29rdXAoZmlsZSwgb3AtPmJvX2hh bmRsZSk7CisJCWlmICghKG9wLT5mbGFncyAmIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX1NQ QVJTRSkpIHsKKwkJCWdlbSA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBvcC0+Ym9faGFu ZGxlKTsKKwkJfSBlbHNlIHsKKwkJCWdlbSA9ICZ2bS0+ZHVtbXktPmJhc2U7CisJCQlkcm1fZ2Vt X29iamVjdF9nZXQoJnZtLT5kdW1teS0+YmFzZSk7CisJCX0KKwogCQlyZXQgPSBwYW50aG9yX3Zt X3ByZXBhcmVfbWFwX29wX2N0eChvcF9jdHgsIHZtLAogCQkJCQkJICAgIGdlbSA/IHRvX3BhbnRo b3JfYm8oZ2VtKSA6IE5VTEwsCiAJCQkJCQkgICAgb3ApOwpAQCAtMzA1Nyw2ICszMTk3LDkgQEAg aW50IHBhbnRob3Jfdm1fbWFwX2JvX3JhbmdlKHN0cnVjdCBwYW50aG9yX3ZtICp2bSwgc3RydWN0 IHBhbnRob3JfZ2VtX29iamVjdCAqYm8KIAlzdHJ1Y3QgcGFudGhvcl92bV9vcF9jdHggb3BfY3R4 OwogCWludCByZXQ7CiAKKwlpZiAoZHJtX1dBUk5fT04oJnZtLT5wdGRldi0+YmFzZSwgZmxhZ3Mg JiBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFSU0UpKQorCQlyZXR1cm4gLUVJTlZBTDsK KwogCXJldCA9IHBhbnRob3Jfdm1fcHJlcGFyZV9tYXBfb3BfY3R4KCZvcF9jdHgsIHZtLCBibywg Jm9wKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBp L2RybS9wYW50aG9yX2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9wYW50aG9yX2RybS5oCmluZGV4 IDE0YTkzYTRlZjZmZi4uYTJmZjBmNGVjNjkxIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJt L3BhbnRob3JfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9wYW50aG9yX2RybS5oCkBAIC02 MTQsNiArNjE0LDE4IEBAIGVudW0gZHJtX3BhbnRob3Jfdm1fYmluZF9vcF9mbGFncyB7CiAJICov CiAJRFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfVU5DQUNIRUQgPSAxIDw8IDIsCiAKKwkvKioK KwkgKiBARFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfU1BBUlNFOiBTcGFyc2VseSBtYXAgYSB2 aXJ0dWFsIG1lbW9yeSByYW5nZQorCSAqCisJICogT25seSB2YWxpZCB3aXRoIERSTV9QQU5USE9S X1ZNX0JJTkRfT1BfVFlQRV9NQVAuCisJICoKKwkgKiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsIHRo ZSB3aG9sZSB2bV9iaW5kIHJhbmdlIGlzIG1hcHBlZCBvdmVyIGEgZHVtbXkgb2JqZWN0IGluIGEg Y3ljbGljCisJICogZmFzaGlvbiwgYW5kIGFsbCBHUFUgcmVhZHMgZnJvbSBhZGRyZXNzZXMgaW4g dGhlIHJhbmdlIHJldHVybiB1bmRlZmluZWQgdmFsdWVzLiBUaGlzIGZsYWcKKwkgKiBiZWluZyBz ZXQgbWVhbnMgZHJtX3BhbnRob3Jfdm1fYmluZF9vcDo6Ym9fb2Zmc2V0IGFuZCBkcm1fcGFudGhv cl92bV9iaW5kX29wOjpib19oYW5kbGUKKwkgKiBtdXN0IGJvdGggYmUgc2V0IHRvIDAuIERSTV9Q QU5USE9SX1ZNX0JJTkRfT1BfTUFQX05PRVhFQyBtdXN0IGFsc28gYmUgc2V0LgorCSAqLworCURS TV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX1NQQVJTRSA9IDEgPDwgMywKKwogCS8qKgogCSAqIEBE Uk1fUEFOVEhPUl9WTV9CSU5EX09QX1RZUEVfTUFTSzogTWFzayB1c2VkIHRvIGRldGVybWluZSB0 aGUgdHlwZSBvZiBvcGVyYXRpb24uCiAJICovCi0tIAoyLjUzLjAKCg==