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 C196FCD4F54 for ; Thu, 21 May 2026 01:44:55 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2997A10F1A3; Thu, 21 May 2026 01:44:55 +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="Y5DnovGX"; 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 B89EB10F19F for ; Thu, 21 May 2026 01:44:51 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; t=1779327881; cv=none; d=zohomail.com; s=zohoarc; b=C7LIKCsBA/olPxRooMWYn7ZUM9A+cl9YH9Wl05zGdMtTNQhp4CTvN3HEXWwMdTZolf3rLrnxuSDqxu7e22Ar+n84Nyf9g0CvWtbp6uWj9X5n1vAkucXsx8DRUygl2cxqlRSXAiWMv0MBZ+J8uEXgevbgcWnxSu11xQhCaN4hdME= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779327881; 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=K/rfI59uz2nlJ/wb0SCy8AMq6hS6ox9JNHGk+xyuMmo=; b=Ie26aUw4MbUhxG44imEYnl2YwCmZ336LHZP3vl9YqLqBGeKRZYI4NscUMTNB4q6ovJw29QT/m0GJ10La4L0u/PecpSk5C9NtoBFYsZDIrV2UY4m443uNUEmxc8zm57oyT/MvABOMvIv5ruhCkcQENIkxABrREwLCqcnbBm5a60Q= 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=1779327881; 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=K/rfI59uz2nlJ/wb0SCy8AMq6hS6ox9JNHGk+xyuMmo=; b=Y5DnovGXMoenvB03yvSnrHRzYnmT8RAElQEmtpnqreGRWC1E0waWG8XJI115lnDf RpcOxeH+jnYiyCFYveV2JtDghJafEguckHXnyyrLKTSgnCU630wBEDoHMv4iVVdKolt ynqw58eWxk3SrJmfrFxOQPsgX1wRIIkbC7bUGCJU= Received: by mx.zohomail.com with SMTPS id 17793278802961014.7727961201872; Wed, 20 May 2026 18:44:40 -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 v12 5/6] drm/panthor: Support sparse mappings Date: Thu, 21 May 2026 02:43:12 +0100 Message-ID: <20260521014359.2011484-6-adrian.larumbe@collabora.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260521014359.2011484-1-adrian.larumbe@collabora.com> References: <20260521014359.2011484-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 L3BhbnRob3IvcGFudGhvcl9tbXUuYyB8IDE5NyArKysrKysrKysrKysrKysrKysrKysrLS0tLQog aW5jbHVkZS91YXBpL2RybS9wYW50aG9yX2RybS5oICAgICAgICB8ICAxMiArKwogNCBmaWxlcyBj aGFuZ2VkLCAyMDMgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv 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 Li5iZGNjNDlmYmE2MjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRo b3JfbW11LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9tbXUuYwpAQCAt MTE2LDYgKzExNiwxNyBAQCBzdHJ1Y3QgcGFudGhvcl9tbXUgewogc3RydWN0IHBhbnRob3Jfdm1f cG9vbCB7CiAJLyoqIEB4YTogQXJyYXkgdXNlZCBmb3IgVk0gaGFuZGxlIHRyYWNraW5nLiAqLwog CXN0cnVjdCB4YXJyYXkgeGE7CisKKwkvKioKKwkgKiBAZHVtbXk6IER1bW15IG9iamVjdCB1c2Vk IGZvciBzcGFyc2UgbWFwcGluZ3MKKwkgKgorCSAqIFNwYXJzZSBiaW5kaW5ncyBtYXAgdmlydHVh bCBhZGRyZXNzIHJhbmdlcyBvbnRvIGEgZHVtbXkKKwkgKiBCTyBpbiBhIG1vZHVsbyBmYXNoaW9u LiBFdmVuIHRob3VnaCBzcGFyc2Ugd3JpdGVzIGFyZSBtZWFudAorCSAqIHRvIGJlIGRpc2NhcmRl ZCBhbmQgcmVhZHMgdW5kZWZpbmVkLCB3cml0ZXMgYXJlIHN0aWxsIHJlZmxlY3RlZAorCSAqIGlu IHRoZSBkdW1teSBidWZmZXIuIFRoYXQgbWVhbnMgd2UgbXVzdCBrZWVwIGEgZHVtbXkgb2JqZWN0 IHBlcgorCSAqIGZpbGUgY29udGV4dCwgdG8gYXZvaWQgZGF0YSBsZWFrcyBiZXR3ZWVuIHRoZW0u CisJICovCisJc3RydWN0IHBhbnRob3JfZ2VtX29iamVjdCAqZHVtbXk7CiB9OwogCiAvKioKQEAg LTM5NSw2ICs0MDYsMTUgQEAgc3RydWN0IHBhbnRob3Jfdm0gewogCQkgKi8KIAkJc3RydWN0IGxp c3RfaGVhZCBscnVfbm9kZTsKIAl9IHJlY2xhaW07CisKKwkvKioKKwkgKiBAZHVtbXk6IER1bW15 IG9iamVjdCB1c2VkIGZvciBzcGFyc2UgbWFwcGluZ3MuCisJICoKKwkgKiBWTSdzIG11c3Qga2Vl cCBhIHJlZmVyZW5jZSB0byB0aGUgZmlsZSBjb250ZXh0LXdpZGUgZHVtbXkgQk8gYmVjYXVzZQor CSAqIHRoZXkgY2FuIG91dGxpdmUgdGhlIGZpbGUgY29udGV4dCwgd2hpY2ggaW5jbHVkZXMgdGhl IFZNIHBvb2wgaG9sZGluZworCSAqIHRoZSBvcmlnaW5hbCBkdW1teSBCTyByZWZlcmVuY2UuCisJ ICovCisJc3RydWN0IHBhbnRob3JfZ2VtX29iamVjdCAqZHVtbXk7CiB9OwogCiAvKioKQEAgLTEw MjcsNiArMTA0NywzMSBAQCBwYW50aG9yX3ZtX21hcF9wYWdlcyhzdHJ1Y3QgcGFudGhvcl92bSAq dm0sIHU2NCBpb3ZhLCBpbnQgcHJvdCwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludAorcGFu dGhvcl92bV9tYXBfc3BhcnNlKHN0cnVjdCBwYW50aG9yX3ZtICp2bSwgdTY0IGlvdmEsIGludCBw cm90LAorCQkgICAgICBzdHJ1Y3Qgc2dfdGFibGUgKnNndCwgdTY0IHNpemUpCit7CisJdTY0IG1h cHBlZCA9IDA7CisJaW50IHJldDsKKworCXdoaWxlIChtYXBwZWQgPCBzaXplKSB7CisJCXU2NCBh ZGRyID0gaW92YSArIG1hcHBlZDsKKwkJdTMyIGNodW5rX3NpemUgPSBtaW4oc2l6ZSAtIG1hcHBl ZCwgU1pfMk0gLSAoYWRkciAmIChTWl8yTSAtIDEpKSk7CisKKwkJcmV0ID0gcGFudGhvcl92bV9t YXBfcGFnZXModm0sIGFkZHIsIHByb3QsIHNndCwKKwkJCQkJICAgYWRkciAlIFNaXzJNLCBjaHVu a19zaXplKTsKKwkJaWYgKHJldCkgeworCQkJcGFudGhvcl92bV91bm1hcF9wYWdlcyh2bSwgaW92 YSwgbWFwcGVkKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKworCQltYXBwZWQgKz0gY2h1bmtfc2l6 ZTsKKwkJY29uZF9yZXNjaGVkKCk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQg ZmxhZ3NfdG9fcHJvdCh1MzIgZmxhZ3MpCiB7CiAJaW50IHByb3QgPSAwOwpAQCAtMTI2OSw2ICsx MzE0LDcgQEAgc3RhdGljIGludCBwYW50aG9yX3ZtX29wX2N0eF9wcmVhbGxvY19wdHMoc3RydWN0 IHBhbnRob3Jfdm1fb3BfY3R4ICpvcF9jdHgpCiAJKERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQ X1JFQURPTkxZIHwgXAogCSBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9OT0VYRUMgfCBcCiAJ IERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX1VOQ0FDSEVEIHwgXAorCSBEUk1fUEFOVEhPUl9W TV9CSU5EX09QX01BUF9TUEFSU0UgfCBcCiAJIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfVFlQRV9N QVNLKQogCiBzdGF0aWMgaW50IHBhbnRob3Jfdm1fcHJlcGFyZV9tYXBfb3BfY3R4KHN0cnVjdCBw YW50aG9yX3ZtX29wX2N0eCAqb3BfY3R4LApAQCAtMTI3Niw2ICsxMzIyLDcgQEAgc3RhdGljIGlu dCBwYW50aG9yX3ZtX3ByZXBhcmVfbWFwX29wX2N0eChzdHJ1Y3QgcGFudGhvcl92bV9vcF9jdHgg Km9wX2N0eCwKIAkJCQkJIHN0cnVjdCBwYW50aG9yX2dlbV9vYmplY3QgKmJvLAogCQkJCQkgY29u c3Qgc3RydWN0IGRybV9wYW50aG9yX3ZtX2JpbmRfb3AgKm9wKQogeworCWJvb2wgaXNfc3BhcnNl ID0gb3AtPmZsYWdzICYgRFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfU1BBUlNFOwogCXN0cnVj dCBkcm1fZ3B1dm1fYm8gKnByZWFsbG9jYXRlZF92bV9ibzsKIAlzdHJ1Y3Qgc2dfdGFibGUgKnNn dCA9IE5VTEw7CiAJaW50IHJldDsKQEAgLTEyODcsOCArMTMzNCwyMSBAQCBzdGF0aWMgaW50IHBh bnRob3Jfdm1fcHJlcGFyZV9tYXBfb3BfY3R4KHN0cnVjdCBwYW50aG9yX3ZtX29wX2N0eCAqb3Bf Y3R4LAogCSAgICAob3AtPmZsYWdzICYgRFJNX1BBTlRIT1JfVk1fQklORF9PUF9UWVBFX01BU0sp ICE9IERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfVFlQRV9NQVApCiAJCXJldHVybiAtRUlOVkFMOwog Ci0JLyogTWFrZSBzdXJlIHRoZSBWQSBhbmQgc2l6ZSBhcmUgaW4tYm91bmRzLiAqLwotCWlmIChv cC0+c2l6ZSA+IGJvLT5iYXNlLnNpemUgfHwgb3AtPmJvX29mZnNldCA+IGJvLT5iYXNlLnNpemUg LSBvcC0+c2l6ZSkKKwkvKiB1QVBJIG1hbmRhdGVzIHNwYXJzZWx5IGJvdW5kIHJlZ2lvbnMgbXVz dCBub3QgYmUgZXhlY3V0YWJsZS4gKi8KKwlpZiAoaXNfc3BhcnNlICYmICEob3AtPmZsYWdzICYg RFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfTk9FWEVDKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwkvKiBGb3Igbm9uLXNwYXJzZSwgbWFrZSBzdXJlIHRoZSBWQSBhbmQgc2l6ZSBhcmUgaW4tYm91 bmRzLgorCSAqIEZvciBzcGFyc2UsIHRoaXMgaXMgbm90IGFwcGxpY2FibGUsIGJlY2F1c2UgdGhl IGR1bW15IEJPIGlzCisJICogcmVwZWF0ZWRseSBtYXBwZWQgb3ZlciBhIHBvdGVudGlhbGx5IHdp ZGVyIFZBIHJhbmdlLgorCSAqLworCWlmICghaXNfc3BhcnNlICYmIChvcC0+c2l6ZSA+IGJvLT5i YXNlLnNpemUgfHwgb3AtPmJvX29mZnNldCA+IGJvLT5iYXNlLnNpemUgLSBvcC0+c2l6ZSkpCisJ CXJldHVybiAtRUlOVkFMOworCisJLyogRm9yIHNwYXJzZSwgd2UgZG9uJ3QgZXhwZWN0IGFueSB1 c2VyIEJPLCB0aGUgQk8gd2UgZ2V0IHBhc3NlZAorCSAqIGlzIHRoZSBkdW1teSBCTyBhdHRhY2hl ZCB0byB0aGUgVk0gcG9vbC4KKwkgKi8KKwlpZiAoaXNfc3BhcnNlICYmIChvcC0+Ym9faGFuZGxl IHx8IG9wLT5ib19vZmZzZXQpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCS8qIElmIHRoZSBCTyBo YXMgYW4gZXhjbHVzaXZlIFZNIGF0dGFjaGVkLCBpdCBjYW4ndCBiZSBtYXBwZWQgdG8gb3RoZXIg Vk1zLiAqLwpAQCAtMTQzNyw3ICsxNDk3LDkgQEAgcGFudGhvcl92bV9nZXRfYm9fZm9yX3ZhKHN0 cnVjdCBwYW50aG9yX3ZtICp2bSwgdTY0IHZhLCB1NjQgKmJvX29mZnNldCkKIAlpZiAodm1hICYm IHZtYS0+YmFzZS5nZW0ub2JqKSB7CiAJCWRybV9nZW1fb2JqZWN0X2dldCh2bWEtPmJhc2UuZ2Vt Lm9iaik7CiAJCWJvID0gdG9fcGFudGhvcl9ibyh2bWEtPmJhc2UuZ2VtLm9iaik7Ci0JCSpib19v ZmZzZXQgPSB2bWEtPmJhc2UuZ2VtLm9mZnNldCArICh2YSAtIHZtYS0+YmFzZS52YS5hZGRyKTsK KwkJKmJvX29mZnNldCA9ICEodm1hLT5mbGFncyAmIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQ X1NQQVJTRSkgPworCQkJdm1hLT5iYXNlLmdlbS5vZmZzZXQgKyAodmEgLSB2bWEtPmJhc2UudmEu YWRkcikgOgorCQkJdmEgJiAoU1pfMk0gLSAxKTsKIAl9CiAJbXV0ZXhfdW5sb2NrKCZ2bS0+b3Bf bG9jayk7CiAKQEAgLTE1NDIsMTAgKzE2MDQsMTQgQEAgaW50IHBhbnRob3Jfdm1fcG9vbF9jcmVh dGVfdm0oc3RydWN0IHBhbnRob3JfZGV2aWNlICpwdGRldiwKIAlpZiAoSVNfRVJSKHZtKSkKIAkJ cmV0dXJuIFBUUl9FUlIodm0pOwogCisJZHJtX2dlbV9vYmplY3RfZ2V0KCZwb29sLT5kdW1teS0+ YmFzZSk7CisJdm0tPmR1bW15ID0gcG9vbC0+ZHVtbXk7CisKIAlyZXQgPSB4YV9hbGxvYygmcG9v bC0+eGEsICZpZCwgdm0sCiAJCSAgICAgICBYQV9MSU1JVCgxLCBQQU5USE9SX01BWF9WTVNfUEVS X0ZJTEUpLCBHRlBfS0VSTkVMKTsKIAogCWlmIChyZXQpIHsKKwkJZHJtX2dlbV9vYmplY3RfcHV0 KCZ2bS0+ZHVtbXktPmJhc2UpOwogCQlwYW50aG9yX3ZtX3B1dCh2bSk7CiAJCXJldHVybiByZXQ7 CiAJfQpAQCAtMTY0MSw2ICsxNzA3LDggQEAgdm9pZCBwYW50aG9yX3ZtX3Bvb2xfZGVzdHJveShz dHJ1Y3QgcGFudGhvcl9maWxlICpwZmlsZSkKIAl4YV9mb3JfZWFjaCgmcGZpbGUtPnZtcy0+eGEs IGksIHZtKQogCQlwYW50aG9yX3ZtX2Rlc3Ryb3kodm0pOwogCisJaWYgKHBmaWxlLT52bXMtPmR1 bW15KQorCQlkcm1fZ2VtX29iamVjdF9wdXQoJnBmaWxlLT52bXMtPmR1bW15LT5iYXNlKTsKIAl4 YV9kZXN0cm95KCZwZmlsZS0+dm1zLT54YSk7CiAJa2ZyZWUocGZpbGUtPnZtcyk7CiB9CkBAIC0x NjUzLDEyICsxNzIxLDI4IEBAIHZvaWQgcGFudGhvcl92bV9wb29sX2Rlc3Ryb3koc3RydWN0IHBh bnRob3JfZmlsZSAqcGZpbGUpCiAgKi8KIGludCBwYW50aG9yX3ZtX3Bvb2xfY3JlYXRlKHN0cnVj dCBwYW50aG9yX2ZpbGUgKnBmaWxlKQogeworCXN0cnVjdCBwYW50aG9yX2dlbV9vYmplY3QgKmR1 bW15OworCWludCByZXQ7CisKIAlwZmlsZS0+dm1zID0ga3phbGxvY19vYmooKnBmaWxlLT52bXMp OwogCWlmICghcGZpbGUtPnZtcykKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAl4YV9pbml0X2ZsYWdz KCZwZmlsZS0+dm1zLT54YSwgWEFfRkxBR1NfQUxMT0MxKTsKKworCWR1bW15ID0gcGFudGhvcl9k dW1teV9ib19jcmVhdGUocGZpbGUtPnB0ZGV2KTsKKwlpZiAoSVNfRVJSKGR1bW15KSkgeworCQly ZXQgPSBQVFJfRVJSKGR1bW15KTsKKwkJZ290byBlcnJfZGVzdHJveV92bV9wb29sOworCX0KKwor CXBmaWxlLT52bXMtPmR1bW15ID0gZHVtbXk7CisKIAlyZXR1cm4gMDsKKworZXJyX2Rlc3Ryb3lf dm1fcG9vbDoKKwlwYW50aG9yX3ZtX3Bvb2xfZGVzdHJveShwZmlsZSk7CisJcmV0dXJuIHJldDsK IH0KIAogLyogZHVtbXkgVExCIG9wcywgdGhlIHJlYWwgVExCIGZsdXNoIGhhcHBlbnMgaW4gcGFu dGhvcl92bV9mbHVzaF9yYW5nZSgpICovCkBAIC0xOTk1LDYgKzIwNzksOSBAQCBzdGF0aWMgdm9p ZCBwYW50aG9yX3ZtX2ZyZWUoc3RydWN0IGRybV9ncHV2bSAqZ3B1dm0pCiAKIAlmcmVlX2lvX3Bn dGFibGVfb3BzKHZtLT5wZ3RibF9vcHMpOwogCisJaWYgKHZtLT5kdW1teSkKKwkJZHJtX2dlbV9v YmplY3RfcHV0KCZ2bS0+ZHVtbXktPmJhc2UpOworCiAJZHJtX21tX3Rha2Vkb3duKCZ2bS0+bW0p OwogCWtmcmVlKHZtKTsKIH0KQEAgLTIxNTQsNyArMjI0MSwzMCBAQCBzdGF0aWMgdm9pZCBwYW50 aG9yX3ZtYV9pbml0KHN0cnVjdCBwYW50aG9yX3ZtYSAqdm1hLCB1MzIgZmxhZ3MpCiAjZGVmaW5l IFBBTlRIT1JfVk1fTUFQX0ZMQUdTIFwKIAkoRFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfUkVB RE9OTFkgfCBcCiAJIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX05PRVhFQyB8IFwKLQkgRFJN X1BBTlRIT1JfVk1fQklORF9PUF9NQVBfVU5DQUNIRUQpCisJIERSTV9QQU5USE9SX1ZNX0JJTkRf T1BfTUFQX1VOQ0FDSEVEIHwgXAorCSBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFSU0Up CisKK3N0YXRpYyB2b2lkCitwYW50aG9yX2ZpeF9zcGFyc2VfbWFwX29mZnNldChzdHJ1Y3QgZHJt X2dwdXZhX29wX21hcCAqb3AsIHUzMiBmbGFncykKK3sKKwlpZiAob3AgJiYgKGZsYWdzICYgRFJN X1BBTlRIT1JfVk1fQklORF9PUF9NQVBfU1BBUlNFKSkKKwkJb3AtPmdlbS5vZmZzZXQgPSBvcC0+ dmEuYWRkciAmIChTWl8yTSAtIDEpOworfQorCitzdGF0aWMgaW50CitwYW50aG9yX3ZtX2V4ZWNf bWFwX29wKHN0cnVjdCBwYW50aG9yX3ZtICp2bSwgdTMyIGZsYWdzLAorCQkgICAgICAgY29uc3Qg c3RydWN0IGRybV9ncHV2YV9vcF9tYXAgKm9wKQoreworCXN0cnVjdCBwYW50aG9yX2dlbV9vYmpl Y3QgKmJvID0gdG9fcGFudGhvcl9ibyhvcC0+Z2VtLm9iaik7CisJaW50IHByb3QgPSBmbGFnc190 b19wcm90KGZsYWdzKTsKKworCWlmIChmbGFncyAmIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQ X1NQQVJTRSkKKwkJcmV0dXJuIHBhbnRob3Jfdm1fbWFwX3NwYXJzZSh2bSwgb3AtPnZhLmFkZHIs IHByb3QsCisJCQkJCSAgICAgYm8tPmRtYXAuc2d0LCBvcC0+dmEucmFuZ2UpOworCisJcmV0dXJu IHBhbnRob3Jfdm1fbWFwX3BhZ2VzKHZtLCBvcC0+dmEuYWRkciwgcHJvdCwgYm8tPmRtYXAuc2d0 LAorCQkJCSAgICBvcC0+Z2VtLm9mZnNldCwgb3AtPnZhLnJhbmdlKTsKK30KIAogc3RhdGljIGlu dCBwYW50aG9yX2dwdXZhX3NtX3N0ZXBfbWFwKHN0cnVjdCBkcm1fZ3B1dmFfb3AgKm9wLCB2b2lk ICpwcml2KQogewpAQCAtMjE2NywxMCArMjI3Nyw5IEBAIHN0YXRpYyBpbnQgcGFudGhvcl9ncHV2 YV9zbV9zdGVwX21hcChzdHJ1Y3QgZHJtX2dwdXZhX29wICpvcCwgdm9pZCAqcHJpdikKIAkJcmV0 dXJuIC1FSU5WQUw7CiAKIAlwYW50aG9yX3ZtYV9pbml0KHZtYSwgb3BfY3R4LT5mbGFncyAmIFBB TlRIT1JfVk1fTUFQX0ZMQUdTKTsKKwlwYW50aG9yX2ZpeF9zcGFyc2VfbWFwX29mZnNldCgmb3At Pm1hcCwgdm1hLT5mbGFncyk7CiAKLQlyZXQgPSBwYW50aG9yX3ZtX21hcF9wYWdlcyh2bSwgb3At Pm1hcC52YS5hZGRyLCBmbGFnc190b19wcm90KHZtYS0+ZmxhZ3MpLAotCQkJCSAgIG9wX2N0eC0+ bWFwLmJvLT5kbWFwLnNndCwgb3AtPm1hcC5nZW0ub2Zmc2V0LAotCQkJCSAgIG9wLT5tYXAudmEu cmFuZ2UpOworCXJldCA9IHBhbnRob3Jfdm1fZXhlY19tYXBfb3Aodm0sIHZtYS0+ZmxhZ3MsICZv cC0+bWFwKTsKIAlpZiAocmV0KSB7CiAJCXBhbnRob3Jfdm1fb3BfY3R4X3JldHVybl92bWEob3Bf Y3R4LCB2bWEpOwogCQlyZXR1cm4gcmV0OwpAQCAtMjIwMiw2ICsyMzExLDggQEAgc3RhdGljIHZv aWQKIHVubWFwX2h1Z2VwYWdlX2FsaWduKGNvbnN0IHN0cnVjdCBkcm1fZ3B1dmFfb3BfcmVtYXAg Km9wLAogCQkgICAgIHU2NCAqdW5tYXBfc3RhcnQsIHU2NCAqdW5tYXBfcmFuZ2UpCiB7CisJc3Ry dWN0IHBhbnRob3Jfdm1hICp1bm1hcF92bWEgPSBjb250YWluZXJfb2Yob3AtPnVubWFwLT52YSwg c3RydWN0IHBhbnRob3Jfdm1hLCBiYXNlKTsKKwlib29sIGlzX3NwYXJzZSA9IHVubWFwX3ZtYS0+ ZmxhZ3MgJiBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFSU0U7CiAJdTY0IGFsaWduZWRf dW5tYXBfc3RhcnQsIGFsaWduZWRfdW5tYXBfZW5kLCB1bm1hcF9lbmQ7CiAKIAl1bm1hcF9lbmQg PSAqdW5tYXBfc3RhcnQgKyAqdW5tYXBfcmFuZ2U7CkBAIC0yMjA5LDExICsyMzIwLDE1IEBAIHVu bWFwX2h1Z2VwYWdlX2FsaWduKGNvbnN0IHN0cnVjdCBkcm1fZ3B1dmFfb3BfcmVtYXAgKm9wLAog CWFsaWduZWRfdW5tYXBfZW5kID0gQUxJR04odW5tYXBfZW5kLCBTWl8yTSk7CiAKIAkvKiBJZiB3 ZSdyZSBkZWFsaW5nIHdpdGggYSBodWdlIHBhZ2UsIG1ha2Ugc3VyZSB0aGUgdW5tYXAgcmVnaW9u IGlzCi0JICogYWxpZ25lZCBvbiB0aGUgc3RhcnQgb2YgdGhlIHBhZ2UuCisJICogYWxpZ25lZCBv biB0aGUgc3RhcnQgb2YgdGhlIHBhZ2UuIElmIHRoZSB1bm1hcHBlZCBWTUEgc3RhbmRzIGZvcgor CSAqIGEgc3BhcnNlIG1hcHBpbmcsIGFsd2F5cyBhc3N1bWUgdGhlIGJhY2tpbmcgc3RvcmFnZSBp cyBhIFRIUCwgc2luY2UKKwkgKiB0aGUgb3ZlcmhlYWQgb2YgdW5tYXBwaW5nIDJNaUIgd29ydGgg b2YgNEtpQiBwYWdlcyBhbmQgcmVtYXBwaW5nCisJICogc29tZSBvZiB0aGVtIGlzIG9mZnNldCBi eSB0aGUgbG9naWMgb2Ygd29ya2luZyBvdXQgd2hldGhlciBpdCdzCisJICogdGhlIG9wcG9zaXRl IGNhc2UgcmlnaHQgYmVsb3cuIFRoaXMgYWxzbyBob2xkcyB0cnVlIGZvciBvcC0+bmV4dC4KIAkg Ki8KIAlpZiAob3AtPnByZXYgJiYgYWxpZ25lZF91bm1hcF9zdGFydCA8ICp1bm1hcF9zdGFydCAm JgogCSAgICBvcC0+cHJldi0+dmEuYWRkciA8PSBhbGlnbmVkX3VubWFwX3N0YXJ0ICYmCi0JICAg IGlvdmFfbWFwcGVkX2FzX2h1Z2VfcGFnZShvcC0+cHJldiwgKnVubWFwX3N0YXJ0KSkgeworCSAg ICAoaXNfc3BhcnNlIHx8IGlvdmFfbWFwcGVkX2FzX2h1Z2VfcGFnZShvcC0+cHJldiwgKnVubWFw X3N0YXJ0KSkpIHsKIAkJKnVubWFwX3JhbmdlICs9ICp1bm1hcF9zdGFydCAtIGFsaWduZWRfdW5t YXBfc3RhcnQ7CiAJCSp1bm1hcF9zdGFydCA9IGFsaWduZWRfdW5tYXBfc3RhcnQ7CiAJfQpAQCAt MjIyMyw3ICsyMzM4LDcgQEAgdW5tYXBfaHVnZXBhZ2VfYWxpZ24oY29uc3Qgc3RydWN0IGRybV9n cHV2YV9vcF9yZW1hcCAqb3AsCiAJICovCiAJaWYgKG9wLT5uZXh0ICYmIGFsaWduZWRfdW5tYXBf ZW5kID4gdW5tYXBfZW5kICYmCiAJICAgIG9wLT5uZXh0LT52YS5hZGRyICsgb3AtPm5leHQtPnZh LnJhbmdlID49IGFsaWduZWRfdW5tYXBfZW5kICYmCi0JICAgIGlvdmFfbWFwcGVkX2FzX2h1Z2Vf cGFnZShvcC0+bmV4dCwgdW5tYXBfZW5kIC0gMSkpIHsKKwkgICAgKGlzX3NwYXJzZSB8fCBpb3Zh X21hcHBlZF9hc19odWdlX3BhZ2Uob3AtPm5leHQsIHVubWFwX2VuZCAtIDEpKSkgewogCQkqdW5t YXBfcmFuZ2UgKz0gYWxpZ25lZF91bm1hcF9lbmQgLSB1bm1hcF9lbmQ7CiAJfQogfQpAQCAtMjI0 MCw2ICsyMzU1LDExIEBAIHN0YXRpYyBpbnQgcGFudGhvcl9ncHV2YV9zbV9zdGVwX3JlbWFwKHN0 cnVjdCBkcm1fZ3B1dmFfb3AgKm9wLAogCiAJZHJtX2dwdXZhX29wX3JlbWFwX3RvX3VubWFwX3Jh bmdlKCZvcC0+cmVtYXAsICZ1bm1hcF9zdGFydCwgJnVubWFwX3JhbmdlKTsKIAorCS8qIG9wLT5y ZW1hcC5wcmV2J3MgQk8gb2Zmc2V0IGlzIGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUgdW5tYXAgdmEn cywgYnV0CisJICogdGhhdCBvZiBvcC0+cmVtYXAubmV4dCBtdXN0IGJlIGFkanVzdGVkIHNvIGFz IHRvIHJlbWFpbiA8IFNaXzJNCisJICovCisJcGFudGhvcl9maXhfc3BhcnNlX21hcF9vZmZzZXQo b3AtPnJlbWFwLm5leHQsIHVubWFwX3ZtYS0+ZmxhZ3MpOworCiAJLyoKIAkgKiBBUk0gSU9NTVUg cGFnZSB0YWJsZSBtYW5hZ2VtZW50IGNvZGUgZGlzYWxsb3dzIHBhcnRpYWwgdW5tYXBzIG9mIGh1 Z2UgcGFnZXMsCiAJICogc28gd2hlbiBhIHBhcnRpYWwgdW5tYXAgaXMgcmVxdWVzdGVkLCB3ZSBt dXN0IGZpcnN0IHVubWFwIHRoZSBlbnRpcmUgaHVnZQpAQCAtMjI1OSwxNCArMjM3OSwxOSBAQCBz dGF0aWMgaW50IHBhbnRob3JfZ3B1dmFfc21fc3RlcF9yZW1hcChzdHJ1Y3QgZHJtX2dwdXZhX29w ICpvcCwKIAl9CiAKIAlpZiAob3AtPnJlbWFwLnByZXYpIHsKLQkJc3RydWN0IHBhbnRob3JfZ2Vt X29iamVjdCAqYm8gPSB0b19wYW50aG9yX2JvKG9wLT5yZW1hcC5wcmV2LT5nZW0ub2JqKTsKIAkJ dTY0IG9mZnNldCA9IG9wLT5yZW1hcC5wcmV2LT5nZW0ub2Zmc2V0ICsgdW5tYXBfc3RhcnQgLSBv cC0+cmVtYXAucHJldi0+dmEuYWRkcjsKIAkJdTY0IHNpemUgPSBvcC0+cmVtYXAucHJldi0+dmEu YWRkciArIG9wLT5yZW1hcC5wcmV2LT52YS5yYW5nZSAtIHVubWFwX3N0YXJ0OwogCi0JCWlmICgh dW5tYXBfdm1hLT5ldmljdGVkKSB7Ci0JCQlyZXQgPSBwYW50aG9yX3ZtX21hcF9wYWdlcyh2bSwg dW5tYXBfc3RhcnQsCi0JCQkJCQkgICBmbGFnc190b19wcm90KHVubWFwX3ZtYS0+ZmxhZ3MpLAot CQkJCQkJICAgYm8tPmRtYXAuc2d0LCBvZmZzZXQsIHNpemUpOworCQlpZiAoIXVubWFwX3ZtYS0+ ZXZpY3RlZCAmJiBzaXplID4gMCkgeworCQkJc3RydWN0IGRybV9ncHV2YV9vcF9tYXAgbWFwX29w ID0geworCQkJCS52YS5hZGRyID0gdW5tYXBfc3RhcnQsCisJCQkJLnZhLnJhbmdlID0gc2l6ZSwK KwkJCQkuZ2VtLm9iaiA9IG9wLT5yZW1hcC5wcmV2LT5nZW0ub2JqLAorCQkJCS5nZW0ub2Zmc2V0 ID0gb2Zmc2V0LAorCQkJfTsKKwkJCXBhbnRob3JfZml4X3NwYXJzZV9tYXBfb2Zmc2V0KCZtYXBf b3AsIHVubWFwX3ZtYS0+ZmxhZ3MpOworCisJCQlyZXQgPSBwYW50aG9yX3ZtX2V4ZWNfbWFwX29w KHZtLCB1bm1hcF92bWEtPmZsYWdzLCAmbWFwX29wKTsKIAkJCWlmIChyZXQpCiAJCQkJcmV0dXJu IHJldDsKIAkJfQpAQCAtMjI3NywxNCArMjQwMiwxOSBAQCBzdGF0aWMgaW50IHBhbnRob3JfZ3B1 dmFfc21fc3RlcF9yZW1hcChzdHJ1Y3QgZHJtX2dwdXZhX29wICpvcCwKIAl9CiAKIAlpZiAob3At PnJlbWFwLm5leHQpIHsKLQkJc3RydWN0IHBhbnRob3JfZ2VtX29iamVjdCAqYm8gPSB0b19wYW50 aG9yX2JvKG9wLT5yZW1hcC5uZXh0LT5nZW0ub2JqKTsKIAkJdTY0IGFkZHIgPSBvcC0+cmVtYXAu bmV4dC0+dmEuYWRkcjsKIAkJdTY0IHNpemUgPSB1bm1hcF9zdGFydCArIHVubWFwX3JhbmdlIC0g b3AtPnJlbWFwLm5leHQtPnZhLmFkZHI7CiAKLQkJaWYgKCF1bm1hcF92bWEtPmV2aWN0ZWQpIHsK LQkJCXJldCA9IHBhbnRob3Jfdm1fbWFwX3BhZ2VzKHZtLCBhZGRyLCBmbGFnc190b19wcm90KHVu bWFwX3ZtYS0+ZmxhZ3MpLAotCQkJCQkJICAgYm8tPmRtYXAuc2d0LCBvcC0+cmVtYXAubmV4dC0+ Z2VtLm9mZnNldCwKLQkJCQkJCSAgIHNpemUpOworCQlpZiAoIXVubWFwX3ZtYS0+ZXZpY3RlZCAm JiBzaXplID4gMCkgeworCQkJc3RydWN0IGRybV9ncHV2YV9vcF9tYXAgbWFwX29wID0geworCQkJ CS52YS5hZGRyID0gYWRkciwKKwkJCQkudmEucmFuZ2UgPSBzaXplLAorCQkJCS5nZW0ub2JqID0g b3AtPnJlbWFwLm5leHQtPmdlbS5vYmosCisJCQkJLmdlbS5vZmZzZXQgPSBvcC0+cmVtYXAubmV4 dC0+Z2VtLm9mZnNldCwKKwkJCX07CisJCQlwYW50aG9yX2ZpeF9zcGFyc2VfbWFwX29mZnNldCgm bWFwX29wLCB1bm1hcF92bWEtPmZsYWdzKTsKKworCQkJcmV0ID0gcGFudGhvcl92bV9leGVjX21h cF9vcCh2bSwgdW5tYXBfdm1hLT5mbGFncywgJm1hcF9vcCk7CiAJCQlpZiAocmV0KQogCQkJCXJl dHVybiByZXQ7CiAJCX0KQEAgLTI0ODEsMTEgKzI2MTEsMTcgQEAgc3RhdGljIGludCByZW1hcF9l dmljdGVkX3ZtYShzdHJ1Y3QgZHJtX2dwdXZtX2JvICp2bV9ibywKIAkJcmV0ID0gcGFudGhvcl92 bV9sb2NrX3JlZ2lvbih2bSwgZXZpY3RlZF92bWEtPmJhc2UudmEuYWRkciwKIAkJCQkJICAgICBl dmljdGVkX3ZtYS0+YmFzZS52YS5yYW5nZSk7CiAJCWlmICghcmV0KSB7Ci0JCQlyZXQgPSBwYW50 aG9yX3ZtX21hcF9wYWdlcyh2bSwgZXZpY3RlZF92bWEtPmJhc2UudmEuYWRkciwKLQkJCQkJCSAg IGZsYWdzX3RvX3Byb3QoZXZpY3RlZF92bWEtPmZsYWdzKSwKLQkJCQkJCSAgIGJvLT5kbWFwLnNn dCwKLQkJCQkJCSAgIGV2aWN0ZWRfdm1hLT5iYXNlLmdlbS5vZmZzZXQsCi0JCQkJCQkgICBldmlj dGVkX3ZtYS0+YmFzZS52YS5yYW5nZSk7CisJCQlzdHJ1Y3QgZHJtX2dwdXZhX29wX21hcCBtYXBf b3AgPSB7CisJCQkJLnZhLmFkZHIgPSBldmljdGVkX3ZtYS0+YmFzZS52YS5hZGRyLAorCQkJCS52 YS5yYW5nZSA9IGV2aWN0ZWRfdm1hLT5iYXNlLnZhLnJhbmdlLAorCQkJCS5nZW0ub2JqID0gJmJv LT5iYXNlLAorCQkJCS5nZW0ub2Zmc2V0ID0gZXZpY3RlZF92bWEtPmJhc2UuZ2VtLm9mZnNldCwK KwkJCX07CisJCQlpZiAoZXZpY3RlZF92bWEtPmZsYWdzICYgRFJNX1BBTlRIT1JfVk1fQklORF9P UF9NQVBfU1BBUlNFKQorCQkJCWRybV9XQVJOX09OX09OQ0UoJnZtLT5wdGRldi0+YmFzZSwgbWFw X29wLmdlbS5vZmZzZXQgIT0KKwkJCQkJCSAobWFwX29wLnZhLmFkZHIgJiAoU1pfMk0gLSAxKSkp OworCisJCQlyZXQgPSBwYW50aG9yX3ZtX2V4ZWNfbWFwX29wKHZtLCBldmljdGVkX3ZtYS0+Zmxh Z3MsICZtYXBfb3ApOwogCQkJaWYgKCFyZXQpCiAJCQkJZXZpY3RlZF92bWEtPmV2aWN0ZWQgPSBm YWxzZTsKIApAQCAtMjg0OSw3ICsyOTg1LDEzIEBAIHBhbnRob3Jfdm1fYmluZF9wcmVwYXJlX29w X2N0eChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCiAKIAlzd2l0Y2ggKG9wLT5mbGFncyAmIERSTV9Q QU5USE9SX1ZNX0JJTkRfT1BfVFlQRV9NQVNLKSB7CiAJY2FzZSBEUk1fUEFOVEhPUl9WTV9CSU5E X09QX1RZUEVfTUFQOgotCQlnZW0gPSBkcm1fZ2VtX29iamVjdF9sb29rdXAoZmlsZSwgb3AtPmJv X2hhbmRsZSk7CisJCWlmICghKG9wLT5mbGFncyAmIERSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQ X1NQQVJTRSkpIHsKKwkJCWdlbSA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBvcC0+Ym9f aGFuZGxlKTsKKwkJfSBlbHNlIHsKKwkJCWdlbSA9ICZ2bS0+ZHVtbXktPmJhc2U7CisJCQlkcm1f Z2VtX29iamVjdF9nZXQoJnZtLT5kdW1teS0+YmFzZSk7CisJCX0KKwogCQlyZXQgPSBwYW50aG9y X3ZtX3ByZXBhcmVfbWFwX29wX2N0eChvcF9jdHgsIHZtLAogCQkJCQkJICAgIGdlbSA/IHRvX3Bh bnRob3JfYm8oZ2VtKSA6IE5VTEwsCiAJCQkJCQkgICAgb3ApOwpAQCAtMzA1Nyw2ICszMTk5LDkg QEAgaW50IHBhbnRob3Jfdm1fbWFwX2JvX3JhbmdlKHN0cnVjdCBwYW50aG9yX3ZtICp2bSwgc3Ry dWN0IHBhbnRob3JfZ2VtX29iamVjdCAqYm8KIAlzdHJ1Y3QgcGFudGhvcl92bV9vcF9jdHggb3Bf Y3R4OwogCWludCByZXQ7CiAKKwlpZiAoZHJtX1dBUk5fT04oJnZtLT5wdGRldi0+YmFzZSwgZmxh Z3MgJiBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX01BUF9TUEFSU0UpKQorCQlyZXR1cm4gLUVJTlZB TDsKKwogCXJldCA9IHBhbnRob3Jfdm1fcHJlcGFyZV9tYXBfb3BfY3R4KCZvcF9jdHgsIHZtLCBi bywgJm9wKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91 YXBpL2RybS9wYW50aG9yX2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9wYW50aG9yX2RybS5oCmlu ZGV4IDE0YTkzYTRlZjZmZi4uYTJmZjBmNGVjNjkxIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkv ZHJtL3BhbnRob3JfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9wYW50aG9yX2RybS5oCkBA IC02MTQsNiArNjE0LDE4IEBAIGVudW0gZHJtX3BhbnRob3Jfdm1fYmluZF9vcF9mbGFncyB7CiAJ ICovCiAJRFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfVU5DQUNIRUQgPSAxIDw8IDIsCiAKKwkv KioKKwkgKiBARFJNX1BBTlRIT1JfVk1fQklORF9PUF9NQVBfU1BBUlNFOiBTcGFyc2VseSBtYXAg YSB2aXJ0dWFsIG1lbW9yeSByYW5nZQorCSAqCisJICogT25seSB2YWxpZCB3aXRoIERSTV9QQU5U SE9SX1ZNX0JJTkRfT1BfVFlQRV9NQVAuCisJICoKKwkgKiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQs IHRoZSB3aG9sZSB2bV9iaW5kIHJhbmdlIGlzIG1hcHBlZCBvdmVyIGEgZHVtbXkgb2JqZWN0IGlu IGEgY3ljbGljCisJICogZmFzaGlvbiwgYW5kIGFsbCBHUFUgcmVhZHMgZnJvbSBhZGRyZXNzZXMg aW4gdGhlIHJhbmdlIHJldHVybiB1bmRlZmluZWQgdmFsdWVzLiBUaGlzIGZsYWcKKwkgKiBiZWlu ZyBzZXQgbWVhbnMgZHJtX3BhbnRob3Jfdm1fYmluZF9vcDo6Ym9fb2Zmc2V0IGFuZCBkcm1fcGFu dGhvcl92bV9iaW5kX29wOjpib19oYW5kbGUKKwkgKiBtdXN0IGJvdGggYmUgc2V0IHRvIDAuIERS TV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX05PRVhFQyBtdXN0IGFsc28gYmUgc2V0LgorCSAqLwor CURSTV9QQU5USE9SX1ZNX0JJTkRfT1BfTUFQX1NQQVJTRSA9IDEgPDwgMywKKwogCS8qKgogCSAq IEBEUk1fUEFOVEhPUl9WTV9CSU5EX09QX1RZUEVfTUFTSzogTWFzayB1c2VkIHRvIGRldGVybWlu ZSB0aGUgdHlwZSBvZiBvcGVyYXRpb24uCiAJICovCi0tIAoyLjUzLjAKCg==