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 X-Spam-Level: X-Spam-Status: No, score=-8.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0B037C28CC0 for ; Wed, 29 May 2019 20:55:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CA9CD241C3 for ; Wed, 29 May 2019 20:55:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="HA+8kVNY"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="ZIw/SGXp" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726787AbfE2Uzk (ORCPT ); Wed, 29 May 2019 16:55:40 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:57810 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726903AbfE2Uzh (ORCPT ); Wed, 29 May 2019 16:55:37 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 82C6E6179C; Wed, 29 May 2019 20:55:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1559163335; bh=9XdIWFmX8TNK6D9uheFUQ+/bDecKzs/u3znPSS/ObVo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HA+8kVNYu6SeA3h2dBPTFplTgWSwCwtoBQVl8rbK7qTSWUNUZh/0cKoHqnKe+Qan4 Klau1mlPyVYAa7u6JFX5/NyIbpyxj1FMEcgz+vl6AjuXCSt1eP5nDgmAeoLIKfHmTN gxC2Rbk1Bm8KKa7NDJvjR8fmNbyo5ca/fvcKn5cw= Received: from jcrouse1-lnx.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: jcrouse@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id 02D6661709; Wed, 29 May 2019 20:55:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1559163332; bh=9XdIWFmX8TNK6D9uheFUQ+/bDecKzs/u3znPSS/ObVo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZIw/SGXpwPbuJOiCkJhsWdu1oKeEJFnCsV4tC7GqX8s0p3Cr6XL/GQysg1/y7XV/R Vd1kIjBqDu3BepHVYddFMHU/3K/ylWShAQaUkOn6PsviJhMHr1i0eoo6NhC+MpiJm4 +qt6s/Ak9Ou7UX4tdfEwRBlJtb7Ygs6HF4N5FEnA= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 02D6661709 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=jcrouse@codeaurora.org From: Jordan Crouse To: freedreno@lists.freedesktop.org Cc: jean-philippe.brucker@arm.com, linux-arm-msm@vger.kernel.org, hoegsberg@google.com, dianders@chromium.org, Sean Paul , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Rob Clark , David Airlie , Daniel Vetter Subject: [PATCH v3 09/16] drm/msm: Pass the MMU domain index in struct msm_file_private Date: Wed, 29 May 2019 14:54:45 -0600 Message-Id: <1559163292-4792-10-git-send-email-jcrouse@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1559163292-4792-1-git-send-email-jcrouse@codeaurora.org> References: <1559163292-4792-1-git-send-email-jcrouse@codeaurora.org> Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Pass the index of the MMU domain in struct msm_file_private instead of assuming gpu->id throughout the submit path. This clears the way to change ctx->aspace to a per-instance pagetable. Signed-off-by: Jordan Crouse --- drivers/gpu/drm/msm/msm_drv.c | 2 ++ drivers/gpu/drm/msm/msm_drv.h | 1 + drivers/gpu/drm/msm/msm_gem.h | 1 + drivers/gpu/drm/msm/msm_gem_submit.c | 13 ++++++++----- drivers/gpu/drm/msm/msm_gpu.c | 5 ++--- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 31deb87..4c51063 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -611,6 +611,7 @@ static void load_gpu(struct drm_device *dev) static int context_init(struct drm_device *dev, struct drm_file *file) { + struct msm_drm_private *priv = dev->dev_private; struct msm_file_private *ctx; ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); @@ -619,6 +620,7 @@ static int context_init(struct drm_device *dev, struct drm_file *file) msm_submitqueue_init(dev, ctx); + ctx->aspace = priv->gpu->aspace; file->driver_priv = ctx; return 0; diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index e20e6b4..d9aa7ba 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -68,6 +68,7 @@ struct msm_file_private { rwlock_t queuelock; struct list_head submitqueues; int queueid; + struct msm_gem_address_space *aspace; }; enum msm_mdp_plane_property { diff --git a/drivers/gpu/drm/msm/msm_gem.h b/drivers/gpu/drm/msm/msm_gem.h index 812d1b1..36aeb58 100644 --- a/drivers/gpu/drm/msm/msm_gem.h +++ b/drivers/gpu/drm/msm/msm_gem.h @@ -141,6 +141,7 @@ void msm_gem_free_work(struct work_struct *work); struct msm_gem_submit { struct drm_device *dev; struct msm_gpu *gpu; + struct msm_gem_address_space *aspace; struct list_head node; /* node in ring submit list */ struct list_head bo_list; struct ww_acquire_ctx ticket; diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c b/drivers/gpu/drm/msm/msm_gem_submit.c index 1b68130..d3801bf 100644 --- a/drivers/gpu/drm/msm/msm_gem_submit.c +++ b/drivers/gpu/drm/msm/msm_gem_submit.c @@ -32,8 +32,9 @@ #define BO_PINNED 0x2000 static struct msm_gem_submit *submit_create(struct drm_device *dev, - struct msm_gpu *gpu, struct msm_gpu_submitqueue *queue, - uint32_t nr_bos, uint32_t nr_cmds) + struct msm_gpu *gpu, struct msm_gem_address_space *aspace, + struct msm_gpu_submitqueue *queue, uint32_t nr_bos, + uint32_t nr_cmds) { struct msm_gem_submit *submit; uint64_t sz = sizeof(*submit) + ((u64)nr_bos * sizeof(submit->bos[0])) + @@ -47,6 +48,7 @@ static struct msm_gem_submit *submit_create(struct drm_device *dev, return NULL; submit->dev = dev; + submit->aspace = aspace; submit->gpu = gpu; submit->fence = NULL; submit->cmd = (void *)&submit->bos[nr_bos]; @@ -160,7 +162,7 @@ static void submit_unlock_unpin_bo(struct msm_gem_submit *submit, struct msm_gem_object *msm_obj = submit->bos[i].obj; if (submit->bos[i].flags & BO_PINNED) - msm_gem_unpin_iova(&msm_obj->base, submit->gpu->aspace); + msm_gem_unpin_iova(&msm_obj->base, submit->aspace); if (submit->bos[i].flags & BO_LOCKED) ww_mutex_unlock(&msm_obj->base.resv->lock); @@ -264,7 +266,7 @@ static int submit_pin_objects(struct msm_gem_submit *submit) /* if locking succeeded, pin bo: */ ret = msm_gem_get_and_pin_iova(&msm_obj->base, - submit->gpu->aspace, &iova); + submit->aspace, &iova); if (ret) break; @@ -477,7 +479,8 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data, } } - submit = submit_create(dev, gpu, queue, args->nr_bos, args->nr_cmds); + submit = submit_create(dev, gpu, ctx->aspace, queue, args->nr_bos, + args->nr_cmds); if (!submit) { ret = -ENOMEM; goto out_unlock; diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c index bf4ee27..0a4c77f 100644 --- a/drivers/gpu/drm/msm/msm_gpu.c +++ b/drivers/gpu/drm/msm/msm_gpu.c @@ -684,7 +684,7 @@ static void retire_submit(struct msm_gpu *gpu, struct msm_ringbuffer *ring, struct msm_gem_object *msm_obj = submit->bos[i].obj; /* move to inactive: */ msm_gem_move_to_inactive(&msm_obj->base); - msm_gem_unpin_iova(&msm_obj->base, gpu->aspace); + msm_gem_unpin_iova(&msm_obj->base, submit->aspace); drm_gem_object_put(&msm_obj->base); } @@ -768,8 +768,7 @@ void msm_gpu_submit(struct msm_gpu *gpu, struct msm_gem_submit *submit, /* submit takes a reference to the bo and iova until retired: */ drm_gem_object_get(&msm_obj->base); - msm_gem_get_and_pin_iova(&msm_obj->base, - submit->gpu->aspace, &iova); + msm_gem_get_and_pin_iova(&msm_obj->base, submit->aspace, &iova); if (submit->bos[i].flags & MSM_SUBMIT_BO_WRITE) msm_gem_move_to_active(&msm_obj->base, gpu, true, submit->fence); -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH v3 09/16] drm/msm: Pass the MMU domain index in struct msm_file_private Date: Wed, 29 May 2019 14:54:45 -0600 Message-ID: <1559163292-4792-10-git-send-email-jcrouse@codeaurora.org> References: <1559163292-4792-1-git-send-email-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1559163292-4792-1-git-send-email-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, David Airlie , Rob Clark , hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, Daniel Vetter , Sean Paul List-Id: dri-devel@lists.freedesktop.org UGFzcyB0aGUgaW5kZXggb2YgdGhlIE1NVSBkb21haW4gaW4gc3RydWN0IG1zbV9maWxlX3ByaXZh dGUgaW5zdGVhZApvZiBhc3N1bWluZyBncHUtPmlkIHRocm91Z2hvdXQgdGhlIHN1Ym1pdCBwYXRo LiBUaGlzIGNsZWFycyB0aGUgd2F5CnRvIGNoYW5nZSBjdHgtPmFzcGFjZSB0byBhIHBlci1pbnN0 YW5jZSBwYWdldGFibGUuCgpTaWduZWQtb2ZmLWJ5OiBKb3JkYW4gQ3JvdXNlIDxqY3JvdXNlQGNv ZGVhdXJvcmEub3JnPgotLS0KCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYyAgICAgICAg fCAgMiArKwogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmggICAgICAgIHwgIDEgKwogZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmggICAgICAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZ2VtX3N1Ym1pdC5jIHwgMTMgKysrKysrKystLS0tLQogZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZ3B1LmMgICAgICAgIHwgIDUgKystLS0KIDUgZmlsZXMgY2hhbmdlZCwgMTQgaW5z ZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bXNtL21zbV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCmluZGV4IDMxZGVi ODcuLjRjNTEwNjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCkBAIC02MTEsNiArNjExLDcgQEAgc3Rh dGljIHZvaWQgbG9hZF9ncHUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogc3RhdGljIGludCBj b250ZXh0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxl KQogeworCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwog CXN0cnVjdCBtc21fZmlsZV9wcml2YXRlICpjdHg7CiAKIAljdHggPSBremFsbG9jKHNpemVvZigq Y3R4KSwgR0ZQX0tFUk5FTCk7CkBAIC02MTksNiArNjIwLDcgQEAgc3RhdGljIGludCBjb250ZXh0 X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKQogCiAJ bXNtX3N1Ym1pdHF1ZXVlX2luaXQoZGV2LCBjdHgpOwogCisJY3R4LT5hc3BhY2UgPSBwcml2LT5n cHUtPmFzcGFjZTsKIAlmaWxlLT5kcml2ZXJfcHJpdiA9IGN0eDsKIAogCXJldHVybiAwOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v bXNtL21zbV9kcnYuaAppbmRleCBlMjBlNmI0Li5kOWFhN2JhIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL21zbV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYu aApAQCAtNjgsNiArNjgsNyBAQCBzdHJ1Y3QgbXNtX2ZpbGVfcHJpdmF0ZSB7CiAJcndsb2NrX3Qg cXVldWVsb2NrOwogCXN0cnVjdCBsaXN0X2hlYWQgc3VibWl0cXVldWVzOwogCWludCBxdWV1ZWlk OworCXN0cnVjdCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2UgKmFzcGFjZTsKIH07CiAKIGVudW0gbXNt X21kcF9wbGFuZV9wcm9wZXJ0eSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9nZW0uaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dlbS5oCmluZGV4IDgxMmQxYjEuLjM2 YWViNTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dlbS5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vbXNtX2dlbS5oCkBAIC0xNDEsNiArMTQxLDcgQEAgdm9pZCBtc21f Z2VtX2ZyZWVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwogc3RydWN0IG1zbV9nZW1f c3VibWl0IHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OwogCXN0cnVjdCBtc21fZ3B1ICpncHU7 CisJc3RydWN0IG1zbV9nZW1fYWRkcmVzc19zcGFjZSAqYXNwYWNlOwogCXN0cnVjdCBsaXN0X2hl YWQgbm9kZTsgICAvKiBub2RlIGluIHJpbmcgc3VibWl0IGxpc3QgKi8KIAlzdHJ1Y3QgbGlzdF9o ZWFkIGJvX2xpc3Q7CiAJc3RydWN0IHd3X2FjcXVpcmVfY3R4IHRpY2tldDsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dlbV9zdWJtaXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2dlbV9zdWJtaXQuYwppbmRleCAxYjY4MTMwLi5kMzgwMWJmIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW1fc3VibWl0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZ2VtX3N1Ym1pdC5jCkBAIC0zMiw4ICszMiw5IEBACiAjZGVmaW5lIEJPX1BJTk5F RCAgIDB4MjAwMAogCiBzdGF0aWMgc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXRfY3JlYXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCXN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBt c21fZ3B1X3N1Ym1pdHF1ZXVlICpxdWV1ZSwKLQkJdWludDMyX3QgbnJfYm9zLCB1aW50MzJfdCBu cl9jbWRzKQorCQlzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNtX2dlbV9hZGRyZXNzX3Nw YWNlICphc3BhY2UsCisJCXN0cnVjdCBtc21fZ3B1X3N1Ym1pdHF1ZXVlICpxdWV1ZSwgdWludDMy X3QgbnJfYm9zLAorCQl1aW50MzJfdCBucl9jbWRzKQogewogCXN0cnVjdCBtc21fZ2VtX3N1Ym1p dCAqc3VibWl0OwogCXVpbnQ2NF90IHN6ID0gc2l6ZW9mKCpzdWJtaXQpICsgKCh1NjQpbnJfYm9z ICogc2l6ZW9mKHN1Ym1pdC0+Ym9zWzBdKSkgKwpAQCAtNDcsNiArNDgsNyBAQCBzdGF0aWMgc3Ry dWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXRfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiAJCXJldHVybiBOVUxMOwogCiAJc3VibWl0LT5kZXYgPSBkZXY7CisJc3VibWl0LT5hc3BhY2Ug PSBhc3BhY2U7CiAJc3VibWl0LT5ncHUgPSBncHU7CiAJc3VibWl0LT5mZW5jZSA9IE5VTEw7CiAJ c3VibWl0LT5jbWQgPSAodm9pZCAqKSZzdWJtaXQtPmJvc1tucl9ib3NdOwpAQCAtMTYwLDcgKzE2 Miw3IEBAIHN0YXRpYyB2b2lkIHN1Ym1pdF91bmxvY2tfdW5waW5fYm8oc3RydWN0IG1zbV9nZW1f c3VibWl0ICpzdWJtaXQsCiAJc3RydWN0IG1zbV9nZW1fb2JqZWN0ICptc21fb2JqID0gc3VibWl0 LT5ib3NbaV0ub2JqOwogCiAJaWYgKHN1Ym1pdC0+Ym9zW2ldLmZsYWdzICYgQk9fUElOTkVEKQot CQltc21fZ2VtX3VucGluX2lvdmEoJm1zbV9vYmotPmJhc2UsIHN1Ym1pdC0+Z3B1LT5hc3BhY2Up OworCQltc21fZ2VtX3VucGluX2lvdmEoJm1zbV9vYmotPmJhc2UsIHN1Ym1pdC0+YXNwYWNlKTsK IAogCWlmIChzdWJtaXQtPmJvc1tpXS5mbGFncyAmIEJPX0xPQ0tFRCkKIAkJd3dfbXV0ZXhfdW5s b2NrKCZtc21fb2JqLT5iYXNlLnJlc3YtPmxvY2spOwpAQCAtMjY0LDcgKzI2Niw3IEBAIHN0YXRp YyBpbnQgc3VibWl0X3Bpbl9vYmplY3RzKHN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0KQog CiAJCS8qIGlmIGxvY2tpbmcgc3VjY2VlZGVkLCBwaW4gYm86ICovCiAJCXJldCA9IG1zbV9nZW1f Z2V0X2FuZF9waW5faW92YSgmbXNtX29iai0+YmFzZSwKLQkJCQlzdWJtaXQtPmdwdS0+YXNwYWNl LCAmaW92YSk7CisJCQkJc3VibWl0LT5hc3BhY2UsICZpb3ZhKTsKIAogCQlpZiAocmV0KQogCQkJ YnJlYWs7CkBAIC00NzcsNyArNDc5LDggQEAgaW50IG1zbV9pb2N0bF9nZW1fc3VibWl0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCX0KIAl9CiAKLQlzdWJtaXQgPSBzdWJt aXRfY3JlYXRlKGRldiwgZ3B1LCBxdWV1ZSwgYXJncy0+bnJfYm9zLCBhcmdzLT5ucl9jbWRzKTsK KwlzdWJtaXQgPSBzdWJtaXRfY3JlYXRlKGRldiwgZ3B1LCBjdHgtPmFzcGFjZSwgcXVldWUsIGFy Z3MtPm5yX2JvcywKKwkJYXJncy0+bnJfY21kcyk7CiAJaWYgKCFzdWJtaXQpIHsKIAkJcmV0ID0g LUVOT01FTTsKIAkJZ290byBvdXRfdW5sb2NrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYwppbmRleCBiZjRl ZTI3Li4wYTRjNzdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYwpAQCAtNjg0LDcgKzY4NCw3IEBAIHN0 YXRpYyB2b2lkIHJldGlyZV9zdWJtaXQoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9y aW5nYnVmZmVyICpyaW5nLAogCQlzdHJ1Y3QgbXNtX2dlbV9vYmplY3QgKm1zbV9vYmogPSBzdWJt aXQtPmJvc1tpXS5vYmo7CiAJCS8qIG1vdmUgdG8gaW5hY3RpdmU6ICovCiAJCW1zbV9nZW1fbW92 ZV90b19pbmFjdGl2ZSgmbXNtX29iai0+YmFzZSk7Ci0JCW1zbV9nZW1fdW5waW5faW92YSgmbXNt X29iai0+YmFzZSwgZ3B1LT5hc3BhY2UpOworCQltc21fZ2VtX3VucGluX2lvdmEoJm1zbV9vYmot PmJhc2UsIHN1Ym1pdC0+YXNwYWNlKTsKIAkJZHJtX2dlbV9vYmplY3RfcHV0KCZtc21fb2JqLT5i YXNlKTsKIAl9CiAKQEAgLTc2OCw4ICs3NjgsNyBAQCB2b2lkIG1zbV9ncHVfc3VibWl0KHN0cnVj dCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0LAogCiAJCS8qIHN1 Ym1pdCB0YWtlcyBhIHJlZmVyZW5jZSB0byB0aGUgYm8gYW5kIGlvdmEgdW50aWwgcmV0aXJlZDog Ki8KIAkJZHJtX2dlbV9vYmplY3RfZ2V0KCZtc21fb2JqLT5iYXNlKTsKLQkJbXNtX2dlbV9nZXRf YW5kX3Bpbl9pb3ZhKCZtc21fb2JqLT5iYXNlLAotCQkJCXN1Ym1pdC0+Z3B1LT5hc3BhY2UsICZp b3ZhKTsKKwkJbXNtX2dlbV9nZXRfYW5kX3Bpbl9pb3ZhKCZtc21fb2JqLT5iYXNlLCBzdWJtaXQt PmFzcGFjZSwgJmlvdmEpOwogCiAJCWlmIChzdWJtaXQtPmJvc1tpXS5mbGFncyAmIE1TTV9TVUJN SVRfQk9fV1JJVEUpCiAJCQltc21fZ2VtX21vdmVfdG9fYWN0aXZlKCZtc21fb2JqLT5iYXNlLCBn cHUsIHRydWUsIHN1Ym1pdC0+ZmVuY2UpOwotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRy ZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubw==