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=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham 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 A9F01C33CBA for ; Fri, 29 Nov 2019 13:59:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 81D4D21823 for ; Fri, 29 Nov 2019 13:59:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726791AbfK2N7P (ORCPT ); Fri, 29 Nov 2019 08:59:15 -0500 Received: from bhuna.collabora.co.uk ([46.235.227.227]:35250 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726821AbfK2N7P (ORCPT ); Fri, 29 Nov 2019 08:59:15 -0500 Received: from localhost.localdomain (unknown [IPv6:2a01:e0a:2c:6930:5cf4:84a1:2763:fe0d]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: bbrezillon) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 8FD9F292585; Fri, 29 Nov 2019 13:59:13 +0000 (GMT) From: Boris Brezillon To: Rob Herring , Tomeu Vizoso , Alyssa Rosenzweig , Steven Price Cc: dri-devel@lists.freedesktop.org, Boris Brezillon , stable@vger.kernel.org Subject: [PATCH 5/8] drm/panfrost: Open/close the perfcnt BO Date: Fri, 29 Nov 2019 14:59:05 +0100 Message-Id: <20191129135908.2439529-6-boris.brezillon@collabora.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191129135908.2439529-1-boris.brezillon@collabora.com> References: <20191129135908.2439529-1-boris.brezillon@collabora.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org Commit a5efb4c9a562 ("drm/panfrost: Restructure the GEM object creation") moved the drm_mm_insert_node_generic() call to the gem->open() hook, but forgot to update perfcnt accordingly. Patch the perfcnt logic to call panfrost_gem_open/close() where appropriate. Fixes: a5efb4c9a562 ("drm/panfrost: Restructure the GEM object creation") Cc: Signed-off-by: Boris Brezillon --- drivers/gpu/drm/panfrost/panfrost_drv.c | 2 +- drivers/gpu/drm/panfrost/panfrost_gem.c | 4 ++-- drivers/gpu/drm/panfrost/panfrost_gem.h | 4 ++++ drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 23 +++++++++++++-------- drivers/gpu/drm/panfrost/panfrost_perfcnt.h | 2 +- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c index 2630c5027c63..1c67ac434e10 100644 --- a/drivers/gpu/drm/panfrost/panfrost_drv.c +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c @@ -445,7 +445,7 @@ panfrost_postclose(struct drm_device *dev, struct drm_file *file) { struct panfrost_file_priv *panfrost_priv = file->driver_priv; - panfrost_perfcnt_close(panfrost_priv); + panfrost_perfcnt_close(file); panfrost_job_close(panfrost_priv); panfrost_mmu_pgtable_free(panfrost_priv); diff --git a/drivers/gpu/drm/panfrost/panfrost_gem.c b/drivers/gpu/drm/panfrost/panfrost_gem.c index daf4c55a2863..92a95210a899 100644 --- a/drivers/gpu/drm/panfrost/panfrost_gem.c +++ b/drivers/gpu/drm/panfrost/panfrost_gem.c @@ -46,7 +46,7 @@ static void panfrost_gem_free_object(struct drm_gem_object *obj) drm_gem_shmem_free_object(obj); } -static int panfrost_gem_open(struct drm_gem_object *obj, struct drm_file *file_priv) +int panfrost_gem_open(struct drm_gem_object *obj, struct drm_file *file_priv) { int ret; size_t size = obj->size; @@ -85,7 +85,7 @@ static int panfrost_gem_open(struct drm_gem_object *obj, struct drm_file *file_p return ret; } -static void panfrost_gem_close(struct drm_gem_object *obj, struct drm_file *file_priv) +void panfrost_gem_close(struct drm_gem_object *obj, struct drm_file *file_priv) { struct panfrost_gem_object *bo = to_panfrost_bo(obj); struct panfrost_file_priv *priv = file_priv->driver_priv; diff --git a/drivers/gpu/drm/panfrost/panfrost_gem.h b/drivers/gpu/drm/panfrost/panfrost_gem.h index 50920819cc16..4b17e7308764 100644 --- a/drivers/gpu/drm/panfrost/panfrost_gem.h +++ b/drivers/gpu/drm/panfrost/panfrost_gem.h @@ -45,6 +45,10 @@ panfrost_gem_create_with_handle(struct drm_file *file_priv, u32 flags, uint32_t *handle); +int panfrost_gem_open(struct drm_gem_object *obj, struct drm_file *file_priv); +void panfrost_gem_close(struct drm_gem_object *obj, + struct drm_file *file_priv); + void panfrost_gem_shrinker_init(struct drm_device *dev); void panfrost_gem_shrinker_cleanup(struct drm_device *dev); diff --git a/drivers/gpu/drm/panfrost/panfrost_perfcnt.c b/drivers/gpu/drm/panfrost/panfrost_perfcnt.c index 2dba192bf198..2c04e858c50a 100644 --- a/drivers/gpu/drm/panfrost/panfrost_perfcnt.c +++ b/drivers/gpu/drm/panfrost/panfrost_perfcnt.c @@ -67,9 +67,10 @@ static int panfrost_perfcnt_dump_locked(struct panfrost_device *pfdev) } static int panfrost_perfcnt_enable_locked(struct panfrost_device *pfdev, - struct panfrost_file_priv *user, + struct drm_file *file_priv, unsigned int counterset) { + struct panfrost_file_priv *user = file_priv->driver_priv; struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; struct drm_gem_shmem_object *bo; u32 cfg; @@ -91,14 +92,14 @@ static int panfrost_perfcnt_enable_locked(struct panfrost_device *pfdev, perfcnt->bo = to_panfrost_bo(&bo->base); /* Map the perfcnt buf in the address space attached to file_priv. */ - ret = panfrost_mmu_map(perfcnt->bo); + ret = panfrost_gem_open(&perfcnt->bo->base.base, file_priv); if (ret) goto err_put_bo; perfcnt->buf = drm_gem_shmem_vmap(&bo->base); if (IS_ERR(perfcnt->buf)) { ret = PTR_ERR(perfcnt->buf); - goto err_put_bo; + goto err_close_bo; } /* @@ -157,14 +158,17 @@ static int panfrost_perfcnt_enable_locked(struct panfrost_device *pfdev, err_vunmap: drm_gem_shmem_vunmap(&perfcnt->bo->base.base, perfcnt->buf); +err_close_bo: + panfrost_gem_close(&perfcnt->bo->base.base, file_priv); err_put_bo: drm_gem_object_put_unlocked(&bo->base); return ret; } static int panfrost_perfcnt_disable_locked(struct panfrost_device *pfdev, - struct panfrost_file_priv *user) + struct drm_file *file_priv) { + struct panfrost_file_priv *user = file_priv->driver_priv; struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; if (user != perfcnt->user) @@ -180,6 +184,7 @@ static int panfrost_perfcnt_disable_locked(struct panfrost_device *pfdev, perfcnt->user = NULL; drm_gem_shmem_vunmap(&perfcnt->bo->base.base, perfcnt->buf); perfcnt->buf = NULL; + panfrost_gem_close(&perfcnt->bo->base.base, file_priv); drm_gem_object_put_unlocked(&perfcnt->bo->base.base); perfcnt->bo = NULL; pm_runtime_mark_last_busy(pfdev->dev); @@ -191,7 +196,6 @@ static int panfrost_perfcnt_disable_locked(struct panfrost_device *pfdev, int panfrost_ioctl_perfcnt_enable(struct drm_device *dev, void *data, struct drm_file *file_priv) { - struct panfrost_file_priv *pfile = file_priv->driver_priv; struct panfrost_device *pfdev = dev->dev_private; struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; struct drm_panfrost_perfcnt_enable *req = data; @@ -207,10 +211,10 @@ int panfrost_ioctl_perfcnt_enable(struct drm_device *dev, void *data, mutex_lock(&perfcnt->lock); if (req->enable) - ret = panfrost_perfcnt_enable_locked(pfdev, pfile, + ret = panfrost_perfcnt_enable_locked(pfdev, file_priv, req->counterset); else - ret = panfrost_perfcnt_disable_locked(pfdev, pfile); + ret = panfrost_perfcnt_disable_locked(pfdev, file_priv); mutex_unlock(&perfcnt->lock); return ret; @@ -248,15 +252,16 @@ int panfrost_ioctl_perfcnt_dump(struct drm_device *dev, void *data, return ret; } -void panfrost_perfcnt_close(struct panfrost_file_priv *pfile) +void panfrost_perfcnt_close(struct drm_file *file_priv) { + struct panfrost_file_priv *pfile = file_priv->driver_priv; struct panfrost_device *pfdev = pfile->pfdev; struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; pm_runtime_get_sync(pfdev->dev); mutex_lock(&perfcnt->lock); if (perfcnt->user == pfile) - panfrost_perfcnt_disable_locked(pfdev, pfile); + panfrost_perfcnt_disable_locked(pfdev, file_priv); mutex_unlock(&perfcnt->lock); pm_runtime_mark_last_busy(pfdev->dev); pm_runtime_put_autosuspend(pfdev->dev); diff --git a/drivers/gpu/drm/panfrost/panfrost_perfcnt.h b/drivers/gpu/drm/panfrost/panfrost_perfcnt.h index 13b8fdaa1b43..8bbcf5f5fb33 100644 --- a/drivers/gpu/drm/panfrost/panfrost_perfcnt.h +++ b/drivers/gpu/drm/panfrost/panfrost_perfcnt.h @@ -9,7 +9,7 @@ void panfrost_perfcnt_sample_done(struct panfrost_device *pfdev); void panfrost_perfcnt_clean_cache_done(struct panfrost_device *pfdev); int panfrost_perfcnt_init(struct panfrost_device *pfdev); void panfrost_perfcnt_fini(struct panfrost_device *pfdev); -void panfrost_perfcnt_close(struct panfrost_file_priv *pfile); +void panfrost_perfcnt_close(struct drm_file *file_priv); int panfrost_ioctl_perfcnt_enable(struct drm_device *dev, void *data, struct drm_file *file_priv); int panfrost_ioctl_perfcnt_dump(struct drm_device *dev, void *data, -- 2.23.0 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=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham 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 B86BCC432C3 for ; Fri, 29 Nov 2019 13:59:45 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 986FD2176D for ; Fri, 29 Nov 2019 13:59:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 986FD2176D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8DE2F6E910; Fri, 29 Nov 2019 13:59:44 +0000 (UTC) Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by gabe.freedesktop.org (Postfix) with ESMTPS id D8A936E909 for ; Fri, 29 Nov 2019 13:59:14 +0000 (UTC) Received: from localhost.localdomain (unknown [IPv6:2a01:e0a:2c:6930:5cf4:84a1:2763:fe0d]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: bbrezillon) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 8FD9F292585; Fri, 29 Nov 2019 13:59:13 +0000 (GMT) From: Boris Brezillon To: Rob Herring , Tomeu Vizoso , Alyssa Rosenzweig , Steven Price Subject: [PATCH 5/8] drm/panfrost: Open/close the perfcnt BO Date: Fri, 29 Nov 2019 14:59:05 +0100 Message-Id: <20191129135908.2439529-6-boris.brezillon@collabora.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191129135908.2439529-1-boris.brezillon@collabora.com> References: <20191129135908.2439529-1-boris.brezillon@collabora.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Boris Brezillon , stable@vger.kernel.org, dri-devel@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191129135905.0cuSY37bEYMCulgy38MK_6pvVKQ0DaSEv6N7GRpKq1I@z> Q29tbWl0IGE1ZWZiNGM5YTU2MiAoImRybS9wYW5mcm9zdDogUmVzdHJ1Y3R1cmUgdGhlIEdFTSBv YmplY3QgY3JlYXRpb24iKQptb3ZlZCB0aGUgZHJtX21tX2luc2VydF9ub2RlX2dlbmVyaWMoKSBj YWxsIHRvIHRoZSBnZW0tPm9wZW4oKSBob29rLApidXQgZm9yZ290IHRvIHVwZGF0ZSBwZXJmY250 IGFjY29yZGluZ2x5LgoKUGF0Y2ggdGhlIHBlcmZjbnQgbG9naWMgdG8gY2FsbCBwYW5mcm9zdF9n ZW1fb3Blbi9jbG9zZSgpIHdoZXJlCmFwcHJvcHJpYXRlLgoKRml4ZXM6IGE1ZWZiNGM5YTU2MiAo ImRybS9wYW5mcm9zdDogUmVzdHJ1Y3R1cmUgdGhlIEdFTSBvYmplY3QgY3JlYXRpb24iKQpDYzog PHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6IEJvcmlzIEJyZXppbGxvbiA8 Ym9yaXMuYnJlemlsbG9uQGNvbGxhYm9yYS5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3BhbmZy b3N0L3BhbmZyb3N0X2Rydi5jICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3Qv cGFuZnJvc3RfZ2VtLmMgICAgIHwgIDQgKystLQogZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3Bh bmZyb3N0X2dlbS5oICAgICB8ICA0ICsrKysKIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5m cm9zdF9wZXJmY250LmMgfCAyMyArKysrKysrKysrKysrLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9wYW5mcm9zdC9wYW5mcm9zdF9wZXJmY250LmggfCAgMiArLQogNSBmaWxlcyBjaGFuZ2VkLCAy MiBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3Qv cGFuZnJvc3RfZHJ2LmMKaW5kZXggMjYzMGM1MDI3YzYzLi4xYzY3YWM0MzRlMTAgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9kcnYuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZHJ2LmMKQEAgLTQ0NSw3ICs0NDUsNyBAQCBwYW5m cm9zdF9wb3N0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpm aWxlKQogewogCXN0cnVjdCBwYW5mcm9zdF9maWxlX3ByaXYgKnBhbmZyb3N0X3ByaXYgPSBmaWxl LT5kcml2ZXJfcHJpdjsKIAotCXBhbmZyb3N0X3BlcmZjbnRfY2xvc2UocGFuZnJvc3RfcHJpdik7 CisJcGFuZnJvc3RfcGVyZmNudF9jbG9zZShmaWxlKTsKIAlwYW5mcm9zdF9qb2JfY2xvc2UocGFu ZnJvc3RfcHJpdik7CiAKIAlwYW5mcm9zdF9tbXVfcGd0YWJsZV9mcmVlKHBhbmZyb3N0X3ByaXYp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jIGIv ZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jCmluZGV4IGRhZjRjNTVhMjg2 My4uOTJhOTUyMTBhODk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFu ZnJvc3RfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5j CkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyB2b2lkIHBhbmZyb3N0X2dlbV9mcmVlX29iamVjdChz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKIAlkcm1fZ2VtX3NobWVtX2ZyZWVfb2JqZWN0KG9i aik7CiB9CiAKLXN0YXRpYyBpbnQgcGFuZnJvc3RfZ2VtX29wZW4oc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmosIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQoraW50IHBhbmZyb3N0X2dlbV9v cGVuKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJp dikKIHsKIAlpbnQgcmV0OwogCXNpemVfdCBzaXplID0gb2JqLT5zaXplOwpAQCAtODUsNyArODUs NyBAQCBzdGF0aWMgaW50IHBhbmZyb3N0X2dlbV9vcGVuKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2 b2lkIHBhbmZyb3N0X2dlbV9jbG9zZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0 IGRybV9maWxlICpmaWxlX3ByaXYpCit2b2lkIHBhbmZyb3N0X2dlbV9jbG9zZShzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCiB7CiAJc3RydWN0 IHBhbmZyb3N0X2dlbV9vYmplY3QgKmJvID0gdG9fcGFuZnJvc3RfYm8ob2JqKTsKIAlzdHJ1Y3Qg cGFuZnJvc3RfZmlsZV9wcml2ICpwcml2ID0gZmlsZV9wcml2LT5kcml2ZXJfcHJpdjsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uaCBiL2RyaXZlcnMv Z3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uaAppbmRleCA1MDkyMDgxOWNjMTYuLjRiMTdl NzMwODc2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dl bS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uaApAQCAtNDUs NiArNDUsMTAgQEAgcGFuZnJvc3RfZ2VtX2NyZWF0ZV93aXRoX2hhbmRsZShzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGVfcHJpdiwKIAkJCQl1MzIgZmxhZ3MsCiAJCQkJdWludDMyX3QgKmhhbmRsZSk7CiAK K2ludCBwYW5mcm9zdF9nZW1fb3BlbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0 IGRybV9maWxlICpmaWxlX3ByaXYpOwordm9pZCBwYW5mcm9zdF9nZW1fY2xvc2Uoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmosCisJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CisKIHZv aWQgcGFuZnJvc3RfZ2VtX3Nocmlua2VyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2 b2lkIHBhbmZyb3N0X2dlbV9zaHJpbmtlcl9jbGVhbnVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfcGVyZmNu dC5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X3BlcmZjbnQuYwppbmRleCAy ZGJhMTkyYmYxOTguLjJjMDRlODU4YzUwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Bh bmZyb3N0L3BhbmZyb3N0X3BlcmZjbnQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3Qv cGFuZnJvc3RfcGVyZmNudC5jCkBAIC02Nyw5ICs2NywxMCBAQCBzdGF0aWMgaW50IHBhbmZyb3N0 X3BlcmZjbnRfZHVtcF9sb2NrZWQoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYpCiB9CiAK IHN0YXRpYyBpbnQgcGFuZnJvc3RfcGVyZmNudF9lbmFibGVfbG9ja2VkKHN0cnVjdCBwYW5mcm9z dF9kZXZpY2UgKnBmZGV2LAotCQkJCQkgIHN0cnVjdCBwYW5mcm9zdF9maWxlX3ByaXYgKnVzZXIs CisJCQkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCiAJCQkJCSAgdW5zaWduZWQgaW50 IGNvdW50ZXJzZXQpCiB7CisJc3RydWN0IHBhbmZyb3N0X2ZpbGVfcHJpdiAqdXNlciA9IGZpbGVf cHJpdi0+ZHJpdmVyX3ByaXY7CiAJc3RydWN0IHBhbmZyb3N0X3BlcmZjbnQgKnBlcmZjbnQgPSBw ZmRldi0+cGVyZmNudDsKIAlzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKmJvOwogCXUzMiBj Zmc7CkBAIC05MSwxNCArOTIsMTQgQEAgc3RhdGljIGludCBwYW5mcm9zdF9wZXJmY250X2VuYWJs ZV9sb2NrZWQoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsCiAJcGVyZmNudC0+Ym8gPSB0 b19wYW5mcm9zdF9ibygmYm8tPmJhc2UpOwogCiAJLyogTWFwIHRoZSBwZXJmY250IGJ1ZiBpbiB0 aGUgYWRkcmVzcyBzcGFjZSBhdHRhY2hlZCB0byBmaWxlX3ByaXYuICovCi0JcmV0ID0gcGFuZnJv c3RfbW11X21hcChwZXJmY250LT5ibyk7CisJcmV0ID0gcGFuZnJvc3RfZ2VtX29wZW4oJnBlcmZj bnQtPmJvLT5iYXNlLmJhc2UsIGZpbGVfcHJpdik7CiAJaWYgKHJldCkKIAkJZ290byBlcnJfcHV0 X2JvOwogCiAJcGVyZmNudC0+YnVmID0gZHJtX2dlbV9zaG1lbV92bWFwKCZiby0+YmFzZSk7CiAJ aWYgKElTX0VSUihwZXJmY250LT5idWYpKSB7CiAJCXJldCA9IFBUUl9FUlIocGVyZmNudC0+YnVm KTsKLQkJZ290byBlcnJfcHV0X2JvOworCQlnb3RvIGVycl9jbG9zZV9ibzsKIAl9CiAKIAkvKgpA QCAtMTU3LDE0ICsxNTgsMTcgQEAgc3RhdGljIGludCBwYW5mcm9zdF9wZXJmY250X2VuYWJsZV9s b2NrZWQoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsCiAKIGVycl92dW5tYXA6CiAJZHJt X2dlbV9zaG1lbV92dW5tYXAoJnBlcmZjbnQtPmJvLT5iYXNlLmJhc2UsIHBlcmZjbnQtPmJ1Zik7 CitlcnJfY2xvc2VfYm86CisJcGFuZnJvc3RfZ2VtX2Nsb3NlKCZwZXJmY250LT5iby0+YmFzZS5i YXNlLCBmaWxlX3ByaXYpOwogZXJyX3B1dF9ibzoKIAlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2Nr ZWQoJmJvLT5iYXNlKTsKIAlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IHBhbmZyb3N0X3Bl cmZjbnRfZGlzYWJsZV9sb2NrZWQoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsCi0JCQkJ CSAgIHN0cnVjdCBwYW5mcm9zdF9maWxlX3ByaXYgKnVzZXIpCisJCQkJCSAgIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZV9wcml2KQogeworCXN0cnVjdCBwYW5mcm9zdF9maWxlX3ByaXYgKnVzZXIgPSBm aWxlX3ByaXYtPmRyaXZlcl9wcml2OwogCXN0cnVjdCBwYW5mcm9zdF9wZXJmY250ICpwZXJmY250 ID0gcGZkZXYtPnBlcmZjbnQ7CiAKIAlpZiAodXNlciAhPSBwZXJmY250LT51c2VyKQpAQCAtMTgw LDYgKzE4NCw3IEBAIHN0YXRpYyBpbnQgcGFuZnJvc3RfcGVyZmNudF9kaXNhYmxlX2xvY2tlZChz dHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwKIAlwZXJmY250LT51c2VyID0gTlVMTDsKIAlk cm1fZ2VtX3NobWVtX3Z1bm1hcCgmcGVyZmNudC0+Ym8tPmJhc2UuYmFzZSwgcGVyZmNudC0+YnVm KTsKIAlwZXJmY250LT5idWYgPSBOVUxMOworCXBhbmZyb3N0X2dlbV9jbG9zZSgmcGVyZmNudC0+ Ym8tPmJhc2UuYmFzZSwgZmlsZV9wcml2KTsKIAlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQo JnBlcmZjbnQtPmJvLT5iYXNlLmJhc2UpOwogCXBlcmZjbnQtPmJvID0gTlVMTDsKIAlwbV9ydW50 aW1lX21hcmtfbGFzdF9idXN5KHBmZGV2LT5kZXYpOwpAQCAtMTkxLDcgKzE5Niw2IEBAIHN0YXRp YyBpbnQgcGFuZnJvc3RfcGVyZmNudF9kaXNhYmxlX2xvY2tlZChzdHJ1Y3QgcGFuZnJvc3RfZGV2 aWNlICpwZmRldiwKIGludCBwYW5mcm9zdF9pb2N0bF9wZXJmY250X2VuYWJsZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlX3By aXYpCiB7Ci0Jc3RydWN0IHBhbmZyb3N0X2ZpbGVfcHJpdiAqcGZpbGUgPSBmaWxlX3ByaXYtPmRy aXZlcl9wcml2OwogCXN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKIAlzdHJ1Y3QgcGFuZnJvc3RfcGVyZmNudCAqcGVyZmNudCA9IHBmZGV2LT5wZXJmY250 OwogCXN0cnVjdCBkcm1fcGFuZnJvc3RfcGVyZmNudF9lbmFibGUgKnJlcSA9IGRhdGE7CkBAIC0y MDcsMTAgKzIxMSwxMCBAQCBpbnQgcGFuZnJvc3RfaW9jdGxfcGVyZmNudF9lbmFibGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAogCW11dGV4X2xvY2soJnBlcmZjbnQtPmxv Y2spOwogCWlmIChyZXEtPmVuYWJsZSkKLQkJcmV0ID0gcGFuZnJvc3RfcGVyZmNudF9lbmFibGVf bG9ja2VkKHBmZGV2LCBwZmlsZSwKKwkJcmV0ID0gcGFuZnJvc3RfcGVyZmNudF9lbmFibGVfbG9j a2VkKHBmZGV2LCBmaWxlX3ByaXYsCiAJCQkJCQkgICAgIHJlcS0+Y291bnRlcnNldCk7CiAJZWxz ZQotCQlyZXQgPSBwYW5mcm9zdF9wZXJmY250X2Rpc2FibGVfbG9ja2VkKHBmZGV2LCBwZmlsZSk7 CisJCXJldCA9IHBhbmZyb3N0X3BlcmZjbnRfZGlzYWJsZV9sb2NrZWQocGZkZXYsIGZpbGVfcHJp dik7CiAJbXV0ZXhfdW5sb2NrKCZwZXJmY250LT5sb2NrKTsKIAogCXJldHVybiByZXQ7CkBAIC0y NDgsMTUgKzI1MiwxNiBAQCBpbnQgcGFuZnJvc3RfaW9jdGxfcGVyZmNudF9kdW1wKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJcmV0dXJuIHJldDsKIH0KIAotdm9pZCBwYW5m cm9zdF9wZXJmY250X2Nsb3NlKHN0cnVjdCBwYW5mcm9zdF9maWxlX3ByaXYgKnBmaWxlKQordm9p ZCBwYW5mcm9zdF9wZXJmY250X2Nsb3NlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQogewor CXN0cnVjdCBwYW5mcm9zdF9maWxlX3ByaXYgKnBmaWxlID0gZmlsZV9wcml2LT5kcml2ZXJfcHJp djsKIAlzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiA9IHBmaWxlLT5wZmRldjsKIAlzdHJ1 Y3QgcGFuZnJvc3RfcGVyZmNudCAqcGVyZmNudCA9IHBmZGV2LT5wZXJmY250OwogCiAJcG1fcnVu dGltZV9nZXRfc3luYyhwZmRldi0+ZGV2KTsKIAltdXRleF9sb2NrKCZwZXJmY250LT5sb2NrKTsK IAlpZiAocGVyZmNudC0+dXNlciA9PSBwZmlsZSkKLQkJcGFuZnJvc3RfcGVyZmNudF9kaXNhYmxl X2xvY2tlZChwZmRldiwgcGZpbGUpOworCQlwYW5mcm9zdF9wZXJmY250X2Rpc2FibGVfbG9ja2Vk KHBmZGV2LCBmaWxlX3ByaXYpOwogCW11dGV4X3VubG9jaygmcGVyZmNudC0+bG9jayk7CiAJcG1f cnVudGltZV9tYXJrX2xhc3RfYnVzeShwZmRldi0+ZGV2KTsKIAlwbV9ydW50aW1lX3B1dF9hdXRv c3VzcGVuZChwZmRldi0+ZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9z dC9wYW5mcm9zdF9wZXJmY250LmggYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3Rf cGVyZmNudC5oCmluZGV4IDEzYjhmZGFhMWI0My4uOGJiY2Y1ZjVmYjMzIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfcGVyZmNudC5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9wZXJmY250LmgKQEAgLTksNyArOSw3IEBAIHZvaWQg cGFuZnJvc3RfcGVyZmNudF9zYW1wbGVfZG9uZShzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRl dik7CiB2b2lkIHBhbmZyb3N0X3BlcmZjbnRfY2xlYW5fY2FjaGVfZG9uZShzdHJ1Y3QgcGFuZnJv c3RfZGV2aWNlICpwZmRldik7CiBpbnQgcGFuZnJvc3RfcGVyZmNudF9pbml0KHN0cnVjdCBwYW5m cm9zdF9kZXZpY2UgKnBmZGV2KTsKIHZvaWQgcGFuZnJvc3RfcGVyZmNudF9maW5pKHN0cnVjdCBw YW5mcm9zdF9kZXZpY2UgKnBmZGV2KTsKLXZvaWQgcGFuZnJvc3RfcGVyZmNudF9jbG9zZShzdHJ1 Y3QgcGFuZnJvc3RfZmlsZV9wcml2ICpwZmlsZSk7Cit2b2lkIHBhbmZyb3N0X3BlcmZjbnRfY2xv c2Uoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogaW50IHBhbmZyb3N0X2lvY3RsX3BlcmZj bnRfZW5hYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJICBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CiBpbnQgcGFuZnJvc3RfaW9jdGxfcGVyZmNudF9kdW1w KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCi0tIAoyLjIzLjAKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==