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=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,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 1DD5FCA9EC9 for ; Mon, 28 Oct 2019 20:10:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D4929214B2 for ; Mon, 28 Oct 2019 20:10:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=ziepe.ca header.i=@ziepe.ca header.b="Z6FPqWY8" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727569AbfJ1UKu (ORCPT ); Mon, 28 Oct 2019 16:10:50 -0400 Received: from mail-qk1-f196.google.com ([209.85.222.196]:39358 "EHLO mail-qk1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726483AbfJ1UKt (ORCPT ); Mon, 28 Oct 2019 16:10:49 -0400 Received: by mail-qk1-f196.google.com with SMTP id 15so9760439qkh.6 for ; Mon, 28 Oct 2019 13:10:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziepe.ca; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rRggeho95DncGN+AT9iW7vh5wy6AMhDkR1ylS8BLo3U=; b=Z6FPqWY8xhqWHQ1Z1jE+fDSLBwgVSNxVQ8c9GC0HnqL5aTlEoyKukvRT0bLCjEmeO3 jdEy/Wt8g7+3oLmfDgjRUbD8LM8pbZV8IsUUjEWlnPSUG6xDdecc6GIDe9+nHnX7zFLj 94H+N0wC5u9gJGFk6UA3/FcBBNDzqp4Gm02HhEfQ+cIEhJMrbcnmOgivf8xIkm8iUAIm +FjxdgozOVglobkgBolzICZS/1dqujKTPGQE594CvbYjULQrckQQ2MpdIeH8TmMUu5Kv nJepfYhuvVSKeFYEijWIva8OuyV40mQb6yTlSYo5sOvsDPinwvNddf4UMo6en49hpBFG RQKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rRggeho95DncGN+AT9iW7vh5wy6AMhDkR1ylS8BLo3U=; b=FlmT0OEdtpDWZzSFdTtLqPAFynbuzX8CPqbEYvDqsDpxueDigDIBQnGfx8hyVnRn0q zt8Fwly30mcAVZGNpkyMR8fcaN29nzjm57HOdkKVOiMUyQVJYCV2Jrf3Kv+1ewL5zj42 NLrxD30kRcgB35TebHRkpfWMAYZpOtoIuAJh9AsZWQCF0byVYeqP3VHmssl8oNC8Y+24 hfPw+NQib0ecCGDzTYYlv0Imz3UI4M/jLOimwQMPR1TQjaRCuuucxvE3DtOOKnIySG98 CTlaHWOOoA7cxCQ2/F6RBaCdpNhCTfZEv3VdshJNRaewcf1GrfNa6NXhfa2VDjBnOImK 2Ddg== X-Gm-Message-State: APjAAAUTJFERqGrTn/WcZzRV6cFDN+KIjmAQW2UI9e40pYAy5Ulax/6U GWkDhOOSs8hmGE6eifax+KPD1g== X-Google-Smtp-Source: APXvYqy/RbSa3eEPDBlXrh1yGA/H58lhDB5xOYOKxwKTP9IyRxvM48S8YYUitKPIWnrC9+g+LsGdEA== X-Received: by 2002:a37:7c42:: with SMTP id x63mr13834831qkc.134.1572293448467; Mon, 28 Oct 2019 13:10:48 -0700 (PDT) Received: from ziepe.ca (hlfxns017vw-142-162-113-180.dhcp-dynamic.fibreop.ns.bellaliant.net. [142.162.113.180]) by smtp.gmail.com with ESMTPSA id o1sm7821372qtb.82.2019.10.28.13.10.43 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 28 Oct 2019 13:10:44 -0700 (PDT) Received: from jgg by mlx.ziepe.ca with local (Exim 4.90_1) (envelope-from ) id 1iPBLf-0001ge-Bn; Mon, 28 Oct 2019 17:10:43 -0300 From: Jason Gunthorpe To: linux-mm@kvack.org, Jerome Glisse , Ralph Campbell , John Hubbard , Felix.Kuehling@amd.com Cc: linux-rdma@vger.kernel.org, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, Alex Deucher , Ben Skeggs , Boris Ostrovsky , =?UTF-8?q?Christian=20K=C3=B6nig?= , David Zhou , Dennis Dalessandro , Juergen Gross , Mike Marciniszyn , Oleksandr Andrushchenko , Petr Cvek , Stefano Stabellini , nouveau@lists.freedesktop.org, xen-devel@lists.xenproject.org, Christoph Hellwig , Jason Gunthorpe Subject: [PATCH v2 07/15] drm/radeon: use mmu_range_notifier_insert Date: Mon, 28 Oct 2019 17:10:24 -0300 Message-Id: <20191028201032.6352-8-jgg@ziepe.ca> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191028201032.6352-1-jgg@ziepe.ca> References: <20191028201032.6352-1-jgg@ziepe.ca> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org From: Jason Gunthorpe The new API is an exact match for the needs of radeon. For some reason radeon tries to remove overlapping ranges from the interval tree, but interval trees (and mmu_range_notifier_insert) support overlapping ranges directly. Simply delete all this code. Since this driver is missing a invalidate_range_end callback, but still calls get_user_pages(), it cannot be correct against all races. Cc: Alex Deucher Cc: Christian König Cc: David (ChunMing) Zhou Cc: amd-gfx@lists.freedesktop.org Cc: Petr Cvek Signed-off-by: Jason Gunthorpe --- drivers/gpu/drm/radeon/radeon.h | 9 +- drivers/gpu/drm/radeon/radeon_mn.c | 219 ++++++----------------------- 2 files changed, 52 insertions(+), 176 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index d59b004f669583..27959f3ace1152 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h @@ -68,6 +68,10 @@ #include #include +#ifdef CONFIG_MMU_NOTIFIER +#include +#endif + #include #include #include @@ -509,8 +513,9 @@ struct radeon_bo { struct ttm_bo_kmap_obj dma_buf_vmap; pid_t pid; - struct radeon_mn *mn; - struct list_head mn_list; +#ifdef CONFIG_MMU_NOTIFIER + struct mmu_range_notifier notifier; +#endif }; #define gem_to_radeon_bo(gobj) container_of((gobj), struct radeon_bo, tbo.base) diff --git a/drivers/gpu/drm/radeon/radeon_mn.c b/drivers/gpu/drm/radeon/radeon_mn.c index dbab9a3a969b9e..d3d41e20a64922 100644 --- a/drivers/gpu/drm/radeon/radeon_mn.c +++ b/drivers/gpu/drm/radeon/radeon_mn.c @@ -36,131 +36,51 @@ #include "radeon.h" -struct radeon_mn { - struct mmu_notifier mn; - - /* objects protected by lock */ - struct mutex lock; - struct rb_root_cached objects; -}; - -struct radeon_mn_node { - struct interval_tree_node it; - struct list_head bos; -}; - /** - * radeon_mn_invalidate_range_start - callback to notify about mm change + * radeon_mn_invalidate - callback to notify about mm change * * @mn: our notifier - * @mn: the mm this callback is about - * @start: start of updated range - * @end: end of updated range + * @range: the VMA under invalidation * * We block for all BOs between start and end to be idle and * unmap them by move them into system domain again. */ -static int radeon_mn_invalidate_range_start(struct mmu_notifier *mn, - const struct mmu_notifier_range *range) +static bool radeon_mn_invalidate(struct mmu_range_notifier *mn, + const struct mmu_notifier_range *range, + unsigned long cur_seq) { - struct radeon_mn *rmn = container_of(mn, struct radeon_mn, mn); + struct radeon_bo *bo = container_of(mn, struct radeon_bo, notifier); struct ttm_operation_ctx ctx = { false, false }; - struct interval_tree_node *it; - unsigned long end; - int ret = 0; - - /* notification is exclusive, but interval is inclusive */ - end = range->end - 1; - - /* TODO we should be able to split locking for interval tree and - * the tear down. - */ - if (mmu_notifier_range_blockable(range)) - mutex_lock(&rmn->lock); - else if (!mutex_trylock(&rmn->lock)) - return -EAGAIN; - - it = interval_tree_iter_first(&rmn->objects, range->start, end); - while (it) { - struct radeon_mn_node *node; - struct radeon_bo *bo; - long r; - - if (!mmu_notifier_range_blockable(range)) { - ret = -EAGAIN; - goto out_unlock; - } - - node = container_of(it, struct radeon_mn_node, it); - it = interval_tree_iter_next(it, range->start, end); + long r; - list_for_each_entry(bo, &node->bos, mn_list) { + if (!bo->tbo.ttm || bo->tbo.ttm->state != tt_bound) + return true; - if (!bo->tbo.ttm || bo->tbo.ttm->state != tt_bound) - continue; + if (!mmu_notifier_range_blockable(range)) + return false; - r = radeon_bo_reserve(bo, true); - if (r) { - DRM_ERROR("(%ld) failed to reserve user bo\n", r); - continue; - } - - r = dma_resv_wait_timeout_rcu(bo->tbo.base.resv, - true, false, MAX_SCHEDULE_TIMEOUT); - if (r <= 0) - DRM_ERROR("(%ld) failed to wait for user bo\n", r); - - radeon_ttm_placement_from_domain(bo, RADEON_GEM_DOMAIN_CPU); - r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx); - if (r) - DRM_ERROR("(%ld) failed to validate user bo\n", r); - - radeon_bo_unreserve(bo); - } + r = radeon_bo_reserve(bo, true); + if (r) { + DRM_ERROR("(%ld) failed to reserve user bo\n", r); + return true; } - -out_unlock: - mutex_unlock(&rmn->lock); - - return ret; -} - -static void radeon_mn_release(struct mmu_notifier *mn, struct mm_struct *mm) -{ - struct mmu_notifier_range range = { - .mm = mm, - .start = 0, - .end = ULONG_MAX, - .flags = 0, - .event = MMU_NOTIFY_UNMAP, - }; - - radeon_mn_invalidate_range_start(mn, &range); -} - -static struct mmu_notifier *radeon_mn_alloc_notifier(struct mm_struct *mm) -{ - struct radeon_mn *rmn; - rmn = kzalloc(sizeof(*rmn), GFP_KERNEL); - if (!rmn) - return ERR_PTR(-ENOMEM); + r = dma_resv_wait_timeout_rcu(bo->tbo.base.resv, true, false, + MAX_SCHEDULE_TIMEOUT); + if (r <= 0) + DRM_ERROR("(%ld) failed to wait for user bo\n", r); - mutex_init(&rmn->lock); - rmn->objects = RB_ROOT_CACHED; - return &rmn->mn; -} + radeon_ttm_placement_from_domain(bo, RADEON_GEM_DOMAIN_CPU); + r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx); + if (r) + DRM_ERROR("(%ld) failed to validate user bo\n", r); -static void radeon_mn_free_notifier(struct mmu_notifier *mn) -{ - kfree(container_of(mn, struct radeon_mn, mn)); + radeon_bo_unreserve(bo); + return true; } -static const struct mmu_notifier_ops radeon_mn_ops = { - .release = radeon_mn_release, - .invalidate_range_start = radeon_mn_invalidate_range_start, - .alloc_notifier = radeon_mn_alloc_notifier, - .free_notifier = radeon_mn_free_notifier, +static const struct mmu_range_notifier_ops radeon_mn_ops = { + .invalidate = radeon_mn_invalidate, }; /** @@ -174,51 +94,21 @@ static const struct mmu_notifier_ops radeon_mn_ops = { */ int radeon_mn_register(struct radeon_bo *bo, unsigned long addr) { - unsigned long end = addr + radeon_bo_size(bo) - 1; - struct mmu_notifier *mn; - struct radeon_mn *rmn; - struct radeon_mn_node *node = NULL; - struct list_head bos; - struct interval_tree_node *it; - - mn = mmu_notifier_get(&radeon_mn_ops, current->mm); - if (IS_ERR(mn)) - return PTR_ERR(mn); - rmn = container_of(mn, struct radeon_mn, mn); - - INIT_LIST_HEAD(&bos); - - mutex_lock(&rmn->lock); - - while ((it = interval_tree_iter_first(&rmn->objects, addr, end))) { - kfree(node); - node = container_of(it, struct radeon_mn_node, it); - interval_tree_remove(&node->it, &rmn->objects); - addr = min(it->start, addr); - end = max(it->last, end); - list_splice(&node->bos, &bos); - } - - if (!node) { - node = kmalloc(sizeof(struct radeon_mn_node), GFP_KERNEL); - if (!node) { - mutex_unlock(&rmn->lock); - return -ENOMEM; - } - } - - bo->mn = rmn; - - node->it.start = addr; - node->it.last = end; - INIT_LIST_HEAD(&node->bos); - list_splice(&bos, &node->bos); - list_add(&bo->mn_list, &node->bos); - - interval_tree_insert(&node->it, &rmn->objects); - - mutex_unlock(&rmn->lock); - + int ret; + + bo->notifier.ops = &radeon_mn_ops; + ret = mmu_range_notifier_insert(&bo->notifier, addr, radeon_bo_size(bo), + current->mm); + if (ret) + return ret; + + /* + * FIXME: radeon appears to allow get_user_pages to run during + * invalidate_range_start/end, which is not a safe way to read the + * PTEs. It should use the mmu_range_read_begin() scheme around the + * get_user_pages to ensure that the PTEs are read properly + */ + mmu_range_read_begin(&bo->notifier); return 0; } @@ -231,27 +121,8 @@ int radeon_mn_register(struct radeon_bo *bo, unsigned long addr) */ void radeon_mn_unregister(struct radeon_bo *bo) { - struct radeon_mn *rmn = bo->mn; - struct list_head *head; - - if (!rmn) + if (!bo->notifier.mm) return; - - mutex_lock(&rmn->lock); - /* save the next list entry for later */ - head = bo->mn_list.next; - - list_del(&bo->mn_list); - - if (list_empty(head)) { - struct radeon_mn_node *node; - node = container_of(head, struct radeon_mn_node, bos); - interval_tree_remove(&node->it, &rmn->objects); - kfree(node); - } - - mutex_unlock(&rmn->lock); - - mmu_notifier_put(&rmn->mn); - bo->mn = NULL; + mmu_range_notifier_remove(&bo->notifier); + bo->notifier.mm = NULL; } -- 2.23.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Gunthorpe Subject: [PATCH v2 07/15] drm/radeon: use mmu_range_notifier_insert Date: Mon, 28 Oct 2019 17:10:24 -0300 Message-ID: <20191028201032.6352-8-jgg@ziepe.ca> References: <20191028201032.6352-1-jgg@ziepe.ca> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191028201032.6352-1-jgg@ziepe.ca> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: linux-mm@kvack.org, Jerome Glisse , Ralph Campbell , John Hubbard , Felix.Kuehling@amd.com Cc: Juergen Gross , David Zhou , Mike Marciniszyn , Stefano Stabellini , Oleksandr Andrushchenko , linux-rdma@vger.kernel.org, nouveau@lists.freedesktop.org, Dennis Dalessandro , amd-gfx@lists.freedesktop.org, Christoph Hellwig , Jason Gunthorpe , dri-devel@lists.freedesktop.org, Alex Deucher , xen-devel@lists.xenproject.org, Boris Ostrovsky , Petr Cvek , =?UTF-8?q?Christian=20K=C3=B6nig?= , Ben Skeggs List-Id: nouveau.vger.kernel.org RnJvbTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgoKVGhlIG5ldyBBUEkgaXMg YW4gZXhhY3QgbWF0Y2ggZm9yIHRoZSBuZWVkcyBvZiByYWRlb24uCgpGb3Igc29tZSByZWFzb24g cmFkZW9uIHRyaWVzIHRvIHJlbW92ZSBvdmVybGFwcGluZyByYW5nZXMgZnJvbSB0aGUKaW50ZXJ2 YWwgdHJlZSwgYnV0IGludGVydmFsIHRyZWVzIChhbmQgbW11X3JhbmdlX25vdGlmaWVyX2luc2Vy dCkKc3VwcG9ydCBvdmVybGFwcGluZyByYW5nZXMgZGlyZWN0bHkuIFNpbXBseSBkZWxldGUgYWxs IHRoaXMgY29kZS4KClNpbmNlIHRoaXMgZHJpdmVyIGlzIG1pc3NpbmcgYSBpbnZhbGlkYXRlX3Jh bmdlX2VuZCBjYWxsYmFjaywgYnV0CnN0aWxsIGNhbGxzIGdldF91c2VyX3BhZ2VzKCksIGl0IGNh bm5vdCBiZSBjb3JyZWN0IGFnYWluc3QgYWxsIHJhY2VzLgoKQ2M6IEFsZXggRGV1Y2hlciA8YWxl eGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KQ2M6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5r b2VuaWdAYW1kLmNvbT4KQ2M6IERhdmlkIChDaHVuTWluZykgWmhvdSA8RGF2aWQxLlpob3VAYW1k LmNvbT4KQ2M6IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCkNjOiBQZXRyIEN2ZWsgPHBl dHJjdmVrY3pAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBKYXNvbiBHdW50aG9ycGUgPGpnZ0Bt ZWxsYW5veC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaCAgICB8ICAg OSArLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW4uYyB8IDIxOSArKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCAx NzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRl b24uaCBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKaW5kZXggZDU5YjAwNGY2Njk1 ODMuLjI3OTU5ZjNhY2UxMTUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3Jh ZGVvbi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKQEAgLTY4LDYgKzY4 LDEwIEBACiAjaW5jbHVkZSA8bGludXgvaGFzaHRhYmxlLmg+CiAjaW5jbHVkZSA8bGludXgvZG1h LWZlbmNlLmg+CiAKKyNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSCisjaW5jbHVkZSA8bGludXgv bW11X25vdGlmaWVyLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPGRybS90dG0vdHRtX2JvX2FwaS5o PgogI2luY2x1ZGUgPGRybS90dG0vdHRtX2JvX2RyaXZlci5oPgogI2luY2x1ZGUgPGRybS90dG0v dHRtX3BsYWNlbWVudC5oPgpAQCAtNTA5LDggKzUxMyw5IEBAIHN0cnVjdCByYWRlb25fYm8gewog CXN0cnVjdCB0dG1fYm9fa21hcF9vYmoJCWRtYV9idWZfdm1hcDsKIAlwaWRfdAkJCQlwaWQ7CiAK LQlzdHJ1Y3QgcmFkZW9uX21uCQkqbW47Ci0Jc3RydWN0IGxpc3RfaGVhZAkJbW5fbGlzdDsKKyNp ZmRlZiBDT05GSUdfTU1VX05PVElGSUVSCisJc3RydWN0IG1tdV9yYW5nZV9ub3RpZmllcglub3Rp ZmllcjsKKyNlbmRpZgogfTsKICNkZWZpbmUgZ2VtX3RvX3JhZGVvbl9ibyhnb2JqKSBjb250YWlu ZXJfb2YoKGdvYmopLCBzdHJ1Y3QgcmFkZW9uX2JvLCB0Ym8uYmFzZSkKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX21uLmMKaW5kZXggZGJhYjlhM2E5NjliOWUuLmQzZDQxZTIwYTY0OTIyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tbi5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uX21uLmMKQEAgLTM2LDEzMSArMzYsNTEgQEAKIAogI2luY2x1 ZGUgInJhZGVvbi5oIgogCi1zdHJ1Y3QgcmFkZW9uX21uIHsKLQlzdHJ1Y3QgbW11X25vdGlmaWVy CW1uOwotCi0JLyogb2JqZWN0cyBwcm90ZWN0ZWQgYnkgbG9jayAqLwotCXN0cnVjdCBtdXRleAkJ bG9jazsKLQlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQJb2JqZWN0czsKLX07Ci0KLXN0cnVjdCByYWRl b25fbW5fbm9kZSB7Ci0Jc3RydWN0IGludGVydmFsX3RyZWVfbm9kZQlpdDsKLQlzdHJ1Y3QgbGlz dF9oZWFkCQlib3M7Ci19OwotCiAvKioKLSAqIHJhZGVvbl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0IC0gY2FsbGJhY2sgdG8gbm90aWZ5IGFib3V0IG1tIGNoYW5nZQorICogcmFkZW9uX21uX2lu dmFsaWRhdGUgLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdlCiAgKgogICogQG1u OiBvdXIgbm90aWZpZXIKLSAqIEBtbjogdGhlIG1tIHRoaXMgY2FsbGJhY2sgaXMgYWJvdXQKLSAq IEBzdGFydDogc3RhcnQgb2YgdXBkYXRlZCByYW5nZQotICogQGVuZDogZW5kIG9mIHVwZGF0ZWQg cmFuZ2UKKyAqIEByYW5nZTogdGhlIFZNQSB1bmRlciBpbnZhbGlkYXRpb24KICAqCiAgKiBXZSBi bG9jayBmb3IgYWxsIEJPcyBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQgdG8gYmUgaWRsZSBhbmQKICAq IHVubWFwIHRoZW0gYnkgbW92ZSB0aGVtIGludG8gc3lzdGVtIGRvbWFpbiBhZ2Fpbi4KICAqLwot c3RhdGljIGludCByYWRlb25fbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25v dGlmaWVyICptbiwKLQkJCQljb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSkK K3N0YXRpYyBib29sIHJhZGVvbl9tbl9pbnZhbGlkYXRlKHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZp ZXIgKm1uLAorCQkJCSBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSwKKwkJ CQkgdW5zaWduZWQgbG9uZyBjdXJfc2VxKQogewotCXN0cnVjdCByYWRlb25fbW4gKnJtbiA9IGNv bnRhaW5lcl9vZihtbiwgc3RydWN0IHJhZGVvbl9tbiwgbW4pOworCXN0cnVjdCByYWRlb25fYm8g KmJvID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3QgcmFkZW9uX2JvLCBub3RpZmllcik7CiAJc3Ry dWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsgZmFsc2UsIGZhbHNlIH07Ci0Jc3RydWN0IGlu dGVydmFsX3RyZWVfbm9kZSAqaXQ7Ci0JdW5zaWduZWQgbG9uZyBlbmQ7Ci0JaW50IHJldCA9IDA7 Ci0KLQkvKiBub3RpZmljYXRpb24gaXMgZXhjbHVzaXZlLCBidXQgaW50ZXJ2YWwgaXMgaW5jbHVz aXZlICovCi0JZW5kID0gcmFuZ2UtPmVuZCAtIDE7Ci0KLQkvKiBUT0RPIHdlIHNob3VsZCBiZSBh YmxlIHRvIHNwbGl0IGxvY2tpbmcgZm9yIGludGVydmFsIHRyZWUgYW5kCi0JICogdGhlIHRlYXIg ZG93bi4KLQkgKi8KLQlpZiAobW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpCi0J CW11dGV4X2xvY2soJnJtbi0+bG9jayk7Ci0JZWxzZSBpZiAoIW11dGV4X3RyeWxvY2soJnJtbi0+ bG9jaykpCi0JCXJldHVybiAtRUFHQUlOOwotCi0JaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfZmly c3QoJnJtbi0+b2JqZWN0cywgcmFuZ2UtPnN0YXJ0LCBlbmQpOwotCXdoaWxlIChpdCkgewotCQlz dHJ1Y3QgcmFkZW9uX21uX25vZGUgKm5vZGU7Ci0JCXN0cnVjdCByYWRlb25fYm8gKmJvOwotCQls b25nIHI7Ci0KLQkJaWYgKCFtbXVfbm90aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHJhbmdlKSkgewot CQkJcmV0ID0gLUVBR0FJTjsKLQkJCWdvdG8gb3V0X3VubG9jazsKLQkJfQotCi0JCW5vZGUgPSBj b250YWluZXJfb2YoaXQsIHN0cnVjdCByYWRlb25fbW5fbm9kZSwgaXQpOwotCQlpdCA9IGludGVy dmFsX3RyZWVfaXRlcl9uZXh0KGl0LCByYW5nZS0+c3RhcnQsIGVuZCk7CisJbG9uZyByOwogCi0J CWxpc3RfZm9yX2VhY2hfZW50cnkoYm8sICZub2RlLT5ib3MsIG1uX2xpc3QpIHsKKwlpZiAoIWJv LT50Ym8udHRtIHx8IGJvLT50Ym8udHRtLT5zdGF0ZSAhPSB0dF9ib3VuZCkKKwkJcmV0dXJuIHRy dWU7CiAKLQkJCWlmICghYm8tPnRiby50dG0gfHwgYm8tPnRiby50dG0tPnN0YXRlICE9IHR0X2Jv dW5kKQotCQkJCWNvbnRpbnVlOworCWlmICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShy YW5nZSkpCisJCXJldHVybiBmYWxzZTsKIAotCQkJciA9IHJhZGVvbl9ib19yZXNlcnZlKGJvLCB0 cnVlKTsKLQkJCWlmIChyKSB7Ci0JCQkJRFJNX0VSUk9SKCIoJWxkKSBmYWlsZWQgdG8gcmVzZXJ2 ZSB1c2VyIGJvXG4iLCByKTsKLQkJCQljb250aW51ZTsKLQkJCX0KLQotCQkJciA9IGRtYV9yZXN2 X3dhaXRfdGltZW91dF9yY3UoYm8tPnRiby5iYXNlLnJlc3YsCi0JCQkJdHJ1ZSwgZmFsc2UsIE1B WF9TQ0hFRFVMRV9USU1FT1VUKTsKLQkJCWlmIChyIDw9IDApCi0JCQkJRFJNX0VSUk9SKCIoJWxk KSBmYWlsZWQgdG8gd2FpdCBmb3IgdXNlciBib1xuIiwgcik7Ci0KLQkJCXJhZGVvbl90dG1fcGxh Y2VtZW50X2Zyb21fZG9tYWluKGJvLCBSQURFT05fR0VNX0RPTUFJTl9DUFUpOwotCQkJciA9IHR0 bV9ib192YWxpZGF0ZSgmYm8tPnRibywgJmJvLT5wbGFjZW1lbnQsICZjdHgpOwotCQkJaWYgKHIp Ci0JCQkJRFJNX0VSUk9SKCIoJWxkKSBmYWlsZWQgdG8gdmFsaWRhdGUgdXNlciBib1xuIiwgcik7 Ci0KLQkJCXJhZGVvbl9ib191bnJlc2VydmUoYm8pOwotCQl9CisJciA9IHJhZGVvbl9ib19yZXNl cnZlKGJvLCB0cnVlKTsKKwlpZiAocikgeworCQlEUk1fRVJST1IoIiglbGQpIGZhaWxlZCB0byBy ZXNlcnZlIHVzZXIgYm9cbiIsIHIpOworCQlyZXR1cm4gdHJ1ZTsKIAl9Ci0JCi1vdXRfdW5sb2Nr OgotCW11dGV4X3VubG9jaygmcm1uLT5sb2NrKTsKLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRp YyB2b2lkIHJhZGVvbl9tbl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLCBzdHJ1Y3Qg bW1fc3RydWN0ICptbSkKLXsKLQlzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlIHJhbmdlID0gewot CQkubW0gPSBtbSwKLQkJLnN0YXJ0ID0gMCwKLQkJLmVuZCA9IFVMT05HX01BWCwKLQkJLmZsYWdz ID0gMCwKLQkJLmV2ZW50ID0gTU1VX05PVElGWV9VTk1BUCwKLQl9OwotCi0JcmFkZW9uX21uX2lu dmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW4sICZyYW5nZSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgbW11 X25vdGlmaWVyICpyYWRlb25fbW5fYWxsb2Nfbm90aWZpZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0p Ci17Ci0Jc3RydWN0IHJhZGVvbl9tbiAqcm1uOwogCi0Jcm1uID0ga3phbGxvYyhzaXplb2YoKnJt biksIEdGUF9LRVJORUwpOwotCWlmICghcm1uKQotCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsK KwlyID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShiby0+dGJvLmJhc2UucmVzdiwgdHJ1ZSwg ZmFsc2UsCisJCQkJICAgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOworCWlmIChyIDw9IDApCisJ CURSTV9FUlJPUigiKCVsZCkgZmFpbGVkIHRvIHdhaXQgZm9yIHVzZXIgYm9cbiIsIHIpOwogCi0J bXV0ZXhfaW5pdCgmcm1uLT5sb2NrKTsKLQlybW4tPm9iamVjdHMgPSBSQl9ST09UX0NBQ0hFRDsK LQlyZXR1cm4gJnJtbi0+bW47Ci19CisJcmFkZW9uX3R0bV9wbGFjZW1lbnRfZnJvbV9kb21haW4o Ym8sIFJBREVPTl9HRU1fRE9NQUlOX0NQVSk7CisJciA9IHR0bV9ib192YWxpZGF0ZSgmYm8tPnRi bywgJmJvLT5wbGFjZW1lbnQsICZjdHgpOworCWlmIChyKQorCQlEUk1fRVJST1IoIiglbGQpIGZh aWxlZCB0byB2YWxpZGF0ZSB1c2VyIGJvXG4iLCByKTsKIAotc3RhdGljIHZvaWQgcmFkZW9uX21u X2ZyZWVfbm90aWZpZXIoc3RydWN0IG1tdV9ub3RpZmllciAqbW4pCi17Ci0Ja2ZyZWUoY29udGFp bmVyX29mKG1uLCBzdHJ1Y3QgcmFkZW9uX21uLCBtbikpOworCXJhZGVvbl9ib191bnJlc2VydmUo Ym8pOworCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmll cl9vcHMgcmFkZW9uX21uX29wcyA9IHsKLQkucmVsZWFzZSA9IHJhZGVvbl9tbl9yZWxlYXNlLAot CS5pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0ID0gcmFkZW9uX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQsCi0JLmFsbG9jX25vdGlmaWVyID0gcmFkZW9uX21uX2FsbG9jX25vdGlmaWVyLAotCS5mcmVl X25vdGlmaWVyID0gcmFkZW9uX21uX2ZyZWVfbm90aWZpZXIsCitzdGF0aWMgY29uc3Qgc3RydWN0 IG1tdV9yYW5nZV9ub3RpZmllcl9vcHMgcmFkZW9uX21uX29wcyA9IHsKKwkuaW52YWxpZGF0ZSA9 IHJhZGVvbl9tbl9pbnZhbGlkYXRlLAogfTsKIAogLyoqCkBAIC0xNzQsNTEgKzk0LDIxIEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcyByYWRlb25fbW5fb3BzID0gewogICov CiBpbnQgcmFkZW9uX21uX3JlZ2lzdGVyKHN0cnVjdCByYWRlb25fYm8gKmJvLCB1bnNpZ25lZCBs b25nIGFkZHIpCiB7Ci0JdW5zaWduZWQgbG9uZyBlbmQgPSBhZGRyICsgcmFkZW9uX2JvX3NpemUo Ym8pIC0gMTsKLQlzdHJ1Y3QgbW11X25vdGlmaWVyICptbjsKLQlzdHJ1Y3QgcmFkZW9uX21uICpy bW47Ci0Jc3RydWN0IHJhZGVvbl9tbl9ub2RlICpub2RlID0gTlVMTDsKLQlzdHJ1Y3QgbGlzdF9o ZWFkIGJvczsKLQlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlICppdDsKLQotCW1uID0gbW11X25v dGlmaWVyX2dldCgmcmFkZW9uX21uX29wcywgY3VycmVudC0+bW0pOwotCWlmIChJU19FUlIobW4p KQotCQlyZXR1cm4gUFRSX0VSUihtbik7Ci0Jcm1uID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3Qg cmFkZW9uX21uLCBtbik7Ci0KLQlJTklUX0xJU1RfSEVBRCgmYm9zKTsKLQotCW11dGV4X2xvY2so JnJtbi0+bG9jayk7Ci0KLQl3aGlsZSAoKGl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZy bW4tPm9iamVjdHMsIGFkZHIsIGVuZCkpKSB7Ci0JCWtmcmVlKG5vZGUpOwotCQlub2RlID0gY29u dGFpbmVyX29mKGl0LCBzdHJ1Y3QgcmFkZW9uX21uX25vZGUsIGl0KTsKLQkJaW50ZXJ2YWxfdHJl ZV9yZW1vdmUoJm5vZGUtPml0LCAmcm1uLT5vYmplY3RzKTsKLQkJYWRkciA9IG1pbihpdC0+c3Rh cnQsIGFkZHIpOwotCQllbmQgPSBtYXgoaXQtPmxhc3QsIGVuZCk7Ci0JCWxpc3Rfc3BsaWNlKCZu b2RlLT5ib3MsICZib3MpOwotCX0KLQotCWlmICghbm9kZSkgewotCQlub2RlID0ga21hbGxvYyhz aXplb2Yoc3RydWN0IHJhZGVvbl9tbl9ub2RlKSwgR0ZQX0tFUk5FTCk7Ci0JCWlmICghbm9kZSkg ewotCQkJbXV0ZXhfdW5sb2NrKCZybW4tPmxvY2spOwotCQkJcmV0dXJuIC1FTk9NRU07Ci0JCX0K LQl9Ci0KLQliby0+bW4gPSBybW47Ci0KLQlub2RlLT5pdC5zdGFydCA9IGFkZHI7Ci0Jbm9kZS0+ aXQubGFzdCA9IGVuZDsKLQlJTklUX0xJU1RfSEVBRCgmbm9kZS0+Ym9zKTsKLQlsaXN0X3NwbGlj ZSgmYm9zLCAmbm9kZS0+Ym9zKTsKLQlsaXN0X2FkZCgmYm8tPm1uX2xpc3QsICZub2RlLT5ib3Mp OwotCi0JaW50ZXJ2YWxfdHJlZV9pbnNlcnQoJm5vZGUtPml0LCAmcm1uLT5vYmplY3RzKTsKLQot CW11dGV4X3VubG9jaygmcm1uLT5sb2NrKTsKLQorCWludCByZXQ7CisKKwliby0+bm90aWZpZXIu b3BzID0gJnJhZGVvbl9tbl9vcHM7CisJcmV0ID0gbW11X3JhbmdlX25vdGlmaWVyX2luc2VydCgm Ym8tPm5vdGlmaWVyLCBhZGRyLCByYWRlb25fYm9fc2l6ZShibyksCisJCQkJCWN1cnJlbnQtPm1t KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyoKKwkgKiBGSVhNRTogcmFkZW9uIGFw cGVhcnMgdG8gYWxsb3cgZ2V0X3VzZXJfcGFnZXMgdG8gcnVuIGR1cmluZworCSAqIGludmFsaWRh dGVfcmFuZ2Vfc3RhcnQvZW5kLCB3aGljaCBpcyBub3QgYSBzYWZlIHdheSB0byByZWFkIHRoZQor CSAqIFBURXMuIEl0IHNob3VsZCB1c2UgdGhlIG1tdV9yYW5nZV9yZWFkX2JlZ2luKCkgc2NoZW1l IGFyb3VuZCB0aGUKKwkgKiBnZXRfdXNlcl9wYWdlcyB0byBlbnN1cmUgdGhhdCB0aGUgUFRFcyBh cmUgcmVhZCBwcm9wZXJseQorCSAqLworCW1tdV9yYW5nZV9yZWFkX2JlZ2luKCZiby0+bm90aWZp ZXIpOwogCXJldHVybiAwOwogfQogCkBAIC0yMzEsMjcgKzEyMSw4IEBAIGludCByYWRlb25fbW5f cmVnaXN0ZXIoc3RydWN0IHJhZGVvbl9ibyAqYm8sIHVuc2lnbmVkIGxvbmcgYWRkcikKICAqLwog dm9pZCByYWRlb25fbW5fdW5yZWdpc3RlcihzdHJ1Y3QgcmFkZW9uX2JvICpibykKIHsKLQlzdHJ1 Y3QgcmFkZW9uX21uICpybW4gPSBiby0+bW47Ci0Jc3RydWN0IGxpc3RfaGVhZCAqaGVhZDsKLQot CWlmICghcm1uKQorCWlmICghYm8tPm5vdGlmaWVyLm1tKQogCQlyZXR1cm47Ci0KLQltdXRleF9s b2NrKCZybW4tPmxvY2spOwotCS8qIHNhdmUgdGhlIG5leHQgbGlzdCBlbnRyeSBmb3IgbGF0ZXIg Ki8KLQloZWFkID0gYm8tPm1uX2xpc3QubmV4dDsKLQotCWxpc3RfZGVsKCZiby0+bW5fbGlzdCk7 Ci0KLQlpZiAobGlzdF9lbXB0eShoZWFkKSkgewotCQlzdHJ1Y3QgcmFkZW9uX21uX25vZGUgKm5v ZGU7Ci0JCW5vZGUgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHJhZGVvbl9tbl9ub2RlLCBi b3MpOwotCQlpbnRlcnZhbF90cmVlX3JlbW92ZSgmbm9kZS0+aXQsICZybW4tPm9iamVjdHMpOwot CQlrZnJlZShub2RlKTsKLQl9Ci0KLQltdXRleF91bmxvY2soJnJtbi0+bG9jayk7Ci0KLQltbXVf bm90aWZpZXJfcHV0KCZybW4tPm1uKTsKLQliby0+bW4gPSBOVUxMOworCW1tdV9yYW5nZV9ub3Rp Zmllcl9yZW1vdmUoJmJvLT5ub3RpZmllcik7CisJYm8tPm5vdGlmaWVyLm1tID0gTlVMTDsKIH0K LS0gCjIuMjMuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw= 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=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 B754ACA9EC1 for ; Mon, 28 Oct 2019 21:08:36 +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 95135218AC for ; Mon, 28 Oct 2019 21:08:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 95135218AC Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ziepe.ca 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 2EC356EA60; Mon, 28 Oct 2019 21:08:36 +0000 (UTC) Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6DF5F89CD8 for ; Mon, 28 Oct 2019 20:10:49 +0000 (UTC) Received: by mail-qk1-x741.google.com with SMTP id e2so1216469qkn.5 for ; Mon, 28 Oct 2019 13:10:49 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rRggeho95DncGN+AT9iW7vh5wy6AMhDkR1ylS8BLo3U=; b=KuflKXcQue95npBgKWfwJenV4Vu2v8djg+31ytQyUPXYzzgFtA8cxbFSj5WlfhO3o5 MYI/PywOx4uCoTUYHCyR13q/QIR0Wm85RmSSejCfpzD6oI9PLYQmF0PTQ5UpIDi7zq9+ 6y4yDaV/dEuS7Iwq9A+jRC3G/ANyHKvT+0SW13dccNBJ0vME3Qo4Ojqn04b/GtZih8kk IdejqzSK+1pXhNM0VyDk3STzPnY8VZRHY69aRB1v3TZ3yRpHf3nBDugpagQkYigat+JG iF6qvjdE93nsAeNC3qiJKWFibegVQglXaNH20AsPN/pe5gb/hsL/I8LBiWXGw38jCdyn Qtqg== X-Gm-Message-State: APjAAAV/Qc7NsDF8c1jnKiLxCiQJPdzv+JFnlxfKSpaagyZPUvgpcki9 Ra9IuKuQbeWTqonXj/We1mxMjA== X-Google-Smtp-Source: APXvYqy/RbSa3eEPDBlXrh1yGA/H58lhDB5xOYOKxwKTP9IyRxvM48S8YYUitKPIWnrC9+g+LsGdEA== X-Received: by 2002:a37:7c42:: with SMTP id x63mr13834831qkc.134.1572293448467; Mon, 28 Oct 2019 13:10:48 -0700 (PDT) Received: from ziepe.ca (hlfxns017vw-142-162-113-180.dhcp-dynamic.fibreop.ns.bellaliant.net. [142.162.113.180]) by smtp.gmail.com with ESMTPSA id o1sm7821372qtb.82.2019.10.28.13.10.43 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 28 Oct 2019 13:10:44 -0700 (PDT) Received: from jgg by mlx.ziepe.ca with local (Exim 4.90_1) (envelope-from ) id 1iPBLf-0001ge-Bn; Mon, 28 Oct 2019 17:10:43 -0300 From: Jason Gunthorpe To: linux-mm@kvack.org, Jerome Glisse , Ralph Campbell , John Hubbard , Felix.Kuehling@amd.com Subject: [PATCH v2 07/15] drm/radeon: use mmu_range_notifier_insert Date: Mon, 28 Oct 2019 17:10:24 -0300 Message-Id: <20191028201032.6352-8-jgg@ziepe.ca> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191028201032.6352-1-jgg@ziepe.ca> References: <20191028201032.6352-1-jgg@ziepe.ca> MIME-Version: 1.0 X-Mailman-Approved-At: Mon, 28 Oct 2019 21:07:58 +0000 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziepe.ca; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rRggeho95DncGN+AT9iW7vh5wy6AMhDkR1ylS8BLo3U=; b=Z6FPqWY8xhqWHQ1Z1jE+fDSLBwgVSNxVQ8c9GC0HnqL5aTlEoyKukvRT0bLCjEmeO3 jdEy/Wt8g7+3oLmfDgjRUbD8LM8pbZV8IsUUjEWlnPSUG6xDdecc6GIDe9+nHnX7zFLj 94H+N0wC5u9gJGFk6UA3/FcBBNDzqp4Gm02HhEfQ+cIEhJMrbcnmOgivf8xIkm8iUAIm +FjxdgozOVglobkgBolzICZS/1dqujKTPGQE594CvbYjULQrckQQ2MpdIeH8TmMUu5Kv nJepfYhuvVSKeFYEijWIva8OuyV40mQb6yTlSYo5sOvsDPinwvNddf4UMo6en49hpBFG RQKw== 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: Juergen Gross , Mike Marciniszyn , Stefano Stabellini , Oleksandr Andrushchenko , linux-rdma@vger.kernel.org, nouveau@lists.freedesktop.org, Dennis Dalessandro , amd-gfx@lists.freedesktop.org, Christoph Hellwig , Jason Gunthorpe , dri-devel@lists.freedesktop.org, Alex Deucher , xen-devel@lists.xenproject.org, Boris Ostrovsky , Petr Cvek , =?UTF-8?q?Christian=20K=C3=B6nig?= , Ben Skeggs Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191028201024.dGeBSGgUtewCzhx81JqKk8jeiTNKcNmHvhXJYac8Y0I@z> RnJvbTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgoKVGhlIG5ldyBBUEkgaXMg YW4gZXhhY3QgbWF0Y2ggZm9yIHRoZSBuZWVkcyBvZiByYWRlb24uCgpGb3Igc29tZSByZWFzb24g cmFkZW9uIHRyaWVzIHRvIHJlbW92ZSBvdmVybGFwcGluZyByYW5nZXMgZnJvbSB0aGUKaW50ZXJ2 YWwgdHJlZSwgYnV0IGludGVydmFsIHRyZWVzIChhbmQgbW11X3JhbmdlX25vdGlmaWVyX2luc2Vy dCkKc3VwcG9ydCBvdmVybGFwcGluZyByYW5nZXMgZGlyZWN0bHkuIFNpbXBseSBkZWxldGUgYWxs IHRoaXMgY29kZS4KClNpbmNlIHRoaXMgZHJpdmVyIGlzIG1pc3NpbmcgYSBpbnZhbGlkYXRlX3Jh bmdlX2VuZCBjYWxsYmFjaywgYnV0CnN0aWxsIGNhbGxzIGdldF91c2VyX3BhZ2VzKCksIGl0IGNh bm5vdCBiZSBjb3JyZWN0IGFnYWluc3QgYWxsIHJhY2VzLgoKQ2M6IEFsZXggRGV1Y2hlciA8YWxl eGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KQ2M6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5r b2VuaWdAYW1kLmNvbT4KQ2M6IERhdmlkIChDaHVuTWluZykgWmhvdSA8RGF2aWQxLlpob3VAYW1k LmNvbT4KQ2M6IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCkNjOiBQZXRyIEN2ZWsgPHBl dHJjdmVrY3pAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBKYXNvbiBHdW50aG9ycGUgPGpnZ0Bt ZWxsYW5veC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaCAgICB8ICAg OSArLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW4uYyB8IDIxOSArKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCAx NzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRl b24uaCBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKaW5kZXggZDU5YjAwNGY2Njk1 ODMuLjI3OTU5ZjNhY2UxMTUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3Jh ZGVvbi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKQEAgLTY4LDYgKzY4 LDEwIEBACiAjaW5jbHVkZSA8bGludXgvaGFzaHRhYmxlLmg+CiAjaW5jbHVkZSA8bGludXgvZG1h LWZlbmNlLmg+CiAKKyNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSCisjaW5jbHVkZSA8bGludXgv bW11X25vdGlmaWVyLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPGRybS90dG0vdHRtX2JvX2FwaS5o PgogI2luY2x1ZGUgPGRybS90dG0vdHRtX2JvX2RyaXZlci5oPgogI2luY2x1ZGUgPGRybS90dG0v dHRtX3BsYWNlbWVudC5oPgpAQCAtNTA5LDggKzUxMyw5IEBAIHN0cnVjdCByYWRlb25fYm8gewog CXN0cnVjdCB0dG1fYm9fa21hcF9vYmoJCWRtYV9idWZfdm1hcDsKIAlwaWRfdAkJCQlwaWQ7CiAK LQlzdHJ1Y3QgcmFkZW9uX21uCQkqbW47Ci0Jc3RydWN0IGxpc3RfaGVhZAkJbW5fbGlzdDsKKyNp ZmRlZiBDT05GSUdfTU1VX05PVElGSUVSCisJc3RydWN0IG1tdV9yYW5nZV9ub3RpZmllcglub3Rp ZmllcjsKKyNlbmRpZgogfTsKICNkZWZpbmUgZ2VtX3RvX3JhZGVvbl9ibyhnb2JqKSBjb250YWlu ZXJfb2YoKGdvYmopLCBzdHJ1Y3QgcmFkZW9uX2JvLCB0Ym8uYmFzZSkKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX21uLmMKaW5kZXggZGJhYjlhM2E5NjliOWUuLmQzZDQxZTIwYTY0OTIyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tbi5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uX21uLmMKQEAgLTM2LDEzMSArMzYsNTEgQEAKIAogI2luY2x1 ZGUgInJhZGVvbi5oIgogCi1zdHJ1Y3QgcmFkZW9uX21uIHsKLQlzdHJ1Y3QgbW11X25vdGlmaWVy CW1uOwotCi0JLyogb2JqZWN0cyBwcm90ZWN0ZWQgYnkgbG9jayAqLwotCXN0cnVjdCBtdXRleAkJ bG9jazsKLQlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQJb2JqZWN0czsKLX07Ci0KLXN0cnVjdCByYWRl b25fbW5fbm9kZSB7Ci0Jc3RydWN0IGludGVydmFsX3RyZWVfbm9kZQlpdDsKLQlzdHJ1Y3QgbGlz dF9oZWFkCQlib3M7Ci19OwotCiAvKioKLSAqIHJhZGVvbl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0IC0gY2FsbGJhY2sgdG8gbm90aWZ5IGFib3V0IG1tIGNoYW5nZQorICogcmFkZW9uX21uX2lu dmFsaWRhdGUgLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdlCiAgKgogICogQG1u OiBvdXIgbm90aWZpZXIKLSAqIEBtbjogdGhlIG1tIHRoaXMgY2FsbGJhY2sgaXMgYWJvdXQKLSAq IEBzdGFydDogc3RhcnQgb2YgdXBkYXRlZCByYW5nZQotICogQGVuZDogZW5kIG9mIHVwZGF0ZWQg cmFuZ2UKKyAqIEByYW5nZTogdGhlIFZNQSB1bmRlciBpbnZhbGlkYXRpb24KICAqCiAgKiBXZSBi bG9jayBmb3IgYWxsIEJPcyBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQgdG8gYmUgaWRsZSBhbmQKICAq IHVubWFwIHRoZW0gYnkgbW92ZSB0aGVtIGludG8gc3lzdGVtIGRvbWFpbiBhZ2Fpbi4KICAqLwot c3RhdGljIGludCByYWRlb25fbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25v dGlmaWVyICptbiwKLQkJCQljb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSkK K3N0YXRpYyBib29sIHJhZGVvbl9tbl9pbnZhbGlkYXRlKHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZp ZXIgKm1uLAorCQkJCSBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSwKKwkJ CQkgdW5zaWduZWQgbG9uZyBjdXJfc2VxKQogewotCXN0cnVjdCByYWRlb25fbW4gKnJtbiA9IGNv bnRhaW5lcl9vZihtbiwgc3RydWN0IHJhZGVvbl9tbiwgbW4pOworCXN0cnVjdCByYWRlb25fYm8g KmJvID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3QgcmFkZW9uX2JvLCBub3RpZmllcik7CiAJc3Ry dWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsgZmFsc2UsIGZhbHNlIH07Ci0Jc3RydWN0IGlu dGVydmFsX3RyZWVfbm9kZSAqaXQ7Ci0JdW5zaWduZWQgbG9uZyBlbmQ7Ci0JaW50IHJldCA9IDA7 Ci0KLQkvKiBub3RpZmljYXRpb24gaXMgZXhjbHVzaXZlLCBidXQgaW50ZXJ2YWwgaXMgaW5jbHVz aXZlICovCi0JZW5kID0gcmFuZ2UtPmVuZCAtIDE7Ci0KLQkvKiBUT0RPIHdlIHNob3VsZCBiZSBh YmxlIHRvIHNwbGl0IGxvY2tpbmcgZm9yIGludGVydmFsIHRyZWUgYW5kCi0JICogdGhlIHRlYXIg ZG93bi4KLQkgKi8KLQlpZiAobW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpCi0J CW11dGV4X2xvY2soJnJtbi0+bG9jayk7Ci0JZWxzZSBpZiAoIW11dGV4X3RyeWxvY2soJnJtbi0+ bG9jaykpCi0JCXJldHVybiAtRUFHQUlOOwotCi0JaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfZmly c3QoJnJtbi0+b2JqZWN0cywgcmFuZ2UtPnN0YXJ0LCBlbmQpOwotCXdoaWxlIChpdCkgewotCQlz dHJ1Y3QgcmFkZW9uX21uX25vZGUgKm5vZGU7Ci0JCXN0cnVjdCByYWRlb25fYm8gKmJvOwotCQls b25nIHI7Ci0KLQkJaWYgKCFtbXVfbm90aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHJhbmdlKSkgewot CQkJcmV0ID0gLUVBR0FJTjsKLQkJCWdvdG8gb3V0X3VubG9jazsKLQkJfQotCi0JCW5vZGUgPSBj b250YWluZXJfb2YoaXQsIHN0cnVjdCByYWRlb25fbW5fbm9kZSwgaXQpOwotCQlpdCA9IGludGVy dmFsX3RyZWVfaXRlcl9uZXh0KGl0LCByYW5nZS0+c3RhcnQsIGVuZCk7CisJbG9uZyByOwogCi0J CWxpc3RfZm9yX2VhY2hfZW50cnkoYm8sICZub2RlLT5ib3MsIG1uX2xpc3QpIHsKKwlpZiAoIWJv LT50Ym8udHRtIHx8IGJvLT50Ym8udHRtLT5zdGF0ZSAhPSB0dF9ib3VuZCkKKwkJcmV0dXJuIHRy dWU7CiAKLQkJCWlmICghYm8tPnRiby50dG0gfHwgYm8tPnRiby50dG0tPnN0YXRlICE9IHR0X2Jv dW5kKQotCQkJCWNvbnRpbnVlOworCWlmICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShy YW5nZSkpCisJCXJldHVybiBmYWxzZTsKIAotCQkJciA9IHJhZGVvbl9ib19yZXNlcnZlKGJvLCB0 cnVlKTsKLQkJCWlmIChyKSB7Ci0JCQkJRFJNX0VSUk9SKCIoJWxkKSBmYWlsZWQgdG8gcmVzZXJ2 ZSB1c2VyIGJvXG4iLCByKTsKLQkJCQljb250aW51ZTsKLQkJCX0KLQotCQkJciA9IGRtYV9yZXN2 X3dhaXRfdGltZW91dF9yY3UoYm8tPnRiby5iYXNlLnJlc3YsCi0JCQkJdHJ1ZSwgZmFsc2UsIE1B WF9TQ0hFRFVMRV9USU1FT1VUKTsKLQkJCWlmIChyIDw9IDApCi0JCQkJRFJNX0VSUk9SKCIoJWxk KSBmYWlsZWQgdG8gd2FpdCBmb3IgdXNlciBib1xuIiwgcik7Ci0KLQkJCXJhZGVvbl90dG1fcGxh Y2VtZW50X2Zyb21fZG9tYWluKGJvLCBSQURFT05fR0VNX0RPTUFJTl9DUFUpOwotCQkJciA9IHR0 bV9ib192YWxpZGF0ZSgmYm8tPnRibywgJmJvLT5wbGFjZW1lbnQsICZjdHgpOwotCQkJaWYgKHIp Ci0JCQkJRFJNX0VSUk9SKCIoJWxkKSBmYWlsZWQgdG8gdmFsaWRhdGUgdXNlciBib1xuIiwgcik7 Ci0KLQkJCXJhZGVvbl9ib191bnJlc2VydmUoYm8pOwotCQl9CisJciA9IHJhZGVvbl9ib19yZXNl cnZlKGJvLCB0cnVlKTsKKwlpZiAocikgeworCQlEUk1fRVJST1IoIiglbGQpIGZhaWxlZCB0byBy ZXNlcnZlIHVzZXIgYm9cbiIsIHIpOworCQlyZXR1cm4gdHJ1ZTsKIAl9Ci0JCi1vdXRfdW5sb2Nr OgotCW11dGV4X3VubG9jaygmcm1uLT5sb2NrKTsKLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRp YyB2b2lkIHJhZGVvbl9tbl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLCBzdHJ1Y3Qg bW1fc3RydWN0ICptbSkKLXsKLQlzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlIHJhbmdlID0gewot CQkubW0gPSBtbSwKLQkJLnN0YXJ0ID0gMCwKLQkJLmVuZCA9IFVMT05HX01BWCwKLQkJLmZsYWdz ID0gMCwKLQkJLmV2ZW50ID0gTU1VX05PVElGWV9VTk1BUCwKLQl9OwotCi0JcmFkZW9uX21uX2lu dmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW4sICZyYW5nZSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgbW11 X25vdGlmaWVyICpyYWRlb25fbW5fYWxsb2Nfbm90aWZpZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0p Ci17Ci0Jc3RydWN0IHJhZGVvbl9tbiAqcm1uOwogCi0Jcm1uID0ga3phbGxvYyhzaXplb2YoKnJt biksIEdGUF9LRVJORUwpOwotCWlmICghcm1uKQotCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsK KwlyID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShiby0+dGJvLmJhc2UucmVzdiwgdHJ1ZSwg ZmFsc2UsCisJCQkJICAgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOworCWlmIChyIDw9IDApCisJ CURSTV9FUlJPUigiKCVsZCkgZmFpbGVkIHRvIHdhaXQgZm9yIHVzZXIgYm9cbiIsIHIpOwogCi0J bXV0ZXhfaW5pdCgmcm1uLT5sb2NrKTsKLQlybW4tPm9iamVjdHMgPSBSQl9ST09UX0NBQ0hFRDsK LQlyZXR1cm4gJnJtbi0+bW47Ci19CisJcmFkZW9uX3R0bV9wbGFjZW1lbnRfZnJvbV9kb21haW4o Ym8sIFJBREVPTl9HRU1fRE9NQUlOX0NQVSk7CisJciA9IHR0bV9ib192YWxpZGF0ZSgmYm8tPnRi bywgJmJvLT5wbGFjZW1lbnQsICZjdHgpOworCWlmIChyKQorCQlEUk1fRVJST1IoIiglbGQpIGZh aWxlZCB0byB2YWxpZGF0ZSB1c2VyIGJvXG4iLCByKTsKIAotc3RhdGljIHZvaWQgcmFkZW9uX21u X2ZyZWVfbm90aWZpZXIoc3RydWN0IG1tdV9ub3RpZmllciAqbW4pCi17Ci0Ja2ZyZWUoY29udGFp bmVyX29mKG1uLCBzdHJ1Y3QgcmFkZW9uX21uLCBtbikpOworCXJhZGVvbl9ib191bnJlc2VydmUo Ym8pOworCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmll cl9vcHMgcmFkZW9uX21uX29wcyA9IHsKLQkucmVsZWFzZSA9IHJhZGVvbl9tbl9yZWxlYXNlLAot CS5pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0ID0gcmFkZW9uX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQsCi0JLmFsbG9jX25vdGlmaWVyID0gcmFkZW9uX21uX2FsbG9jX25vdGlmaWVyLAotCS5mcmVl X25vdGlmaWVyID0gcmFkZW9uX21uX2ZyZWVfbm90aWZpZXIsCitzdGF0aWMgY29uc3Qgc3RydWN0 IG1tdV9yYW5nZV9ub3RpZmllcl9vcHMgcmFkZW9uX21uX29wcyA9IHsKKwkuaW52YWxpZGF0ZSA9 IHJhZGVvbl9tbl9pbnZhbGlkYXRlLAogfTsKIAogLyoqCkBAIC0xNzQsNTEgKzk0LDIxIEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcyByYWRlb25fbW5fb3BzID0gewogICov CiBpbnQgcmFkZW9uX21uX3JlZ2lzdGVyKHN0cnVjdCByYWRlb25fYm8gKmJvLCB1bnNpZ25lZCBs b25nIGFkZHIpCiB7Ci0JdW5zaWduZWQgbG9uZyBlbmQgPSBhZGRyICsgcmFkZW9uX2JvX3NpemUo Ym8pIC0gMTsKLQlzdHJ1Y3QgbW11X25vdGlmaWVyICptbjsKLQlzdHJ1Y3QgcmFkZW9uX21uICpy bW47Ci0Jc3RydWN0IHJhZGVvbl9tbl9ub2RlICpub2RlID0gTlVMTDsKLQlzdHJ1Y3QgbGlzdF9o ZWFkIGJvczsKLQlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlICppdDsKLQotCW1uID0gbW11X25v dGlmaWVyX2dldCgmcmFkZW9uX21uX29wcywgY3VycmVudC0+bW0pOwotCWlmIChJU19FUlIobW4p KQotCQlyZXR1cm4gUFRSX0VSUihtbik7Ci0Jcm1uID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3Qg cmFkZW9uX21uLCBtbik7Ci0KLQlJTklUX0xJU1RfSEVBRCgmYm9zKTsKLQotCW11dGV4X2xvY2so JnJtbi0+bG9jayk7Ci0KLQl3aGlsZSAoKGl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZy bW4tPm9iamVjdHMsIGFkZHIsIGVuZCkpKSB7Ci0JCWtmcmVlKG5vZGUpOwotCQlub2RlID0gY29u dGFpbmVyX29mKGl0LCBzdHJ1Y3QgcmFkZW9uX21uX25vZGUsIGl0KTsKLQkJaW50ZXJ2YWxfdHJl ZV9yZW1vdmUoJm5vZGUtPml0LCAmcm1uLT5vYmplY3RzKTsKLQkJYWRkciA9IG1pbihpdC0+c3Rh cnQsIGFkZHIpOwotCQllbmQgPSBtYXgoaXQtPmxhc3QsIGVuZCk7Ci0JCWxpc3Rfc3BsaWNlKCZu b2RlLT5ib3MsICZib3MpOwotCX0KLQotCWlmICghbm9kZSkgewotCQlub2RlID0ga21hbGxvYyhz aXplb2Yoc3RydWN0IHJhZGVvbl9tbl9ub2RlKSwgR0ZQX0tFUk5FTCk7Ci0JCWlmICghbm9kZSkg ewotCQkJbXV0ZXhfdW5sb2NrKCZybW4tPmxvY2spOwotCQkJcmV0dXJuIC1FTk9NRU07Ci0JCX0K LQl9Ci0KLQliby0+bW4gPSBybW47Ci0KLQlub2RlLT5pdC5zdGFydCA9IGFkZHI7Ci0Jbm9kZS0+ aXQubGFzdCA9IGVuZDsKLQlJTklUX0xJU1RfSEVBRCgmbm9kZS0+Ym9zKTsKLQlsaXN0X3NwbGlj ZSgmYm9zLCAmbm9kZS0+Ym9zKTsKLQlsaXN0X2FkZCgmYm8tPm1uX2xpc3QsICZub2RlLT5ib3Mp OwotCi0JaW50ZXJ2YWxfdHJlZV9pbnNlcnQoJm5vZGUtPml0LCAmcm1uLT5vYmplY3RzKTsKLQot CW11dGV4X3VubG9jaygmcm1uLT5sb2NrKTsKLQorCWludCByZXQ7CisKKwliby0+bm90aWZpZXIu b3BzID0gJnJhZGVvbl9tbl9vcHM7CisJcmV0ID0gbW11X3JhbmdlX25vdGlmaWVyX2luc2VydCgm Ym8tPm5vdGlmaWVyLCBhZGRyLCByYWRlb25fYm9fc2l6ZShibyksCisJCQkJCWN1cnJlbnQtPm1t KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyoKKwkgKiBGSVhNRTogcmFkZW9uIGFw cGVhcnMgdG8gYWxsb3cgZ2V0X3VzZXJfcGFnZXMgdG8gcnVuIGR1cmluZworCSAqIGludmFsaWRh dGVfcmFuZ2Vfc3RhcnQvZW5kLCB3aGljaCBpcyBub3QgYSBzYWZlIHdheSB0byByZWFkIHRoZQor CSAqIFBURXMuIEl0IHNob3VsZCB1c2UgdGhlIG1tdV9yYW5nZV9yZWFkX2JlZ2luKCkgc2NoZW1l IGFyb3VuZCB0aGUKKwkgKiBnZXRfdXNlcl9wYWdlcyB0byBlbnN1cmUgdGhhdCB0aGUgUFRFcyBh cmUgcmVhZCBwcm9wZXJseQorCSAqLworCW1tdV9yYW5nZV9yZWFkX2JlZ2luKCZiby0+bm90aWZp ZXIpOwogCXJldHVybiAwOwogfQogCkBAIC0yMzEsMjcgKzEyMSw4IEBAIGludCByYWRlb25fbW5f cmVnaXN0ZXIoc3RydWN0IHJhZGVvbl9ibyAqYm8sIHVuc2lnbmVkIGxvbmcgYWRkcikKICAqLwog dm9pZCByYWRlb25fbW5fdW5yZWdpc3RlcihzdHJ1Y3QgcmFkZW9uX2JvICpibykKIHsKLQlzdHJ1 Y3QgcmFkZW9uX21uICpybW4gPSBiby0+bW47Ci0Jc3RydWN0IGxpc3RfaGVhZCAqaGVhZDsKLQot CWlmICghcm1uKQorCWlmICghYm8tPm5vdGlmaWVyLm1tKQogCQlyZXR1cm47Ci0KLQltdXRleF9s b2NrKCZybW4tPmxvY2spOwotCS8qIHNhdmUgdGhlIG5leHQgbGlzdCBlbnRyeSBmb3IgbGF0ZXIg Ki8KLQloZWFkID0gYm8tPm1uX2xpc3QubmV4dDsKLQotCWxpc3RfZGVsKCZiby0+bW5fbGlzdCk7 Ci0KLQlpZiAobGlzdF9lbXB0eShoZWFkKSkgewotCQlzdHJ1Y3QgcmFkZW9uX21uX25vZGUgKm5v ZGU7Ci0JCW5vZGUgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHJhZGVvbl9tbl9ub2RlLCBi b3MpOwotCQlpbnRlcnZhbF90cmVlX3JlbW92ZSgmbm9kZS0+aXQsICZybW4tPm9iamVjdHMpOwot CQlrZnJlZShub2RlKTsKLQl9Ci0KLQltdXRleF91bmxvY2soJnJtbi0+bG9jayk7Ci0KLQltbXVf bm90aWZpZXJfcHV0KCZybW4tPm1uKTsKLQliby0+bW4gPSBOVUxMOworCW1tdV9yYW5nZV9ub3Rp Zmllcl9yZW1vdmUoJmJvLT5ub3RpZmllcik7CisJYm8tPm5vdGlmaWVyLm1tID0gTlVMTDsKIH0K LS0gCjIuMjMuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs 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.5 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=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 C2797CA9EC0 for ; Mon, 28 Oct 2019 20:11:49 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 8B2E5208C0 for ; Mon, 28 Oct 2019 20:11:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=ziepe.ca header.i=@ziepe.ca header.b="Z6FPqWY8" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8B2E5208C0 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ziepe.ca Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iPBMS-0001lj-Ap; Mon, 28 Oct 2019 20:11:32 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iPBMQ-0001kh-Oc for xen-devel@lists.xenproject.org; Mon, 28 Oct 2019 20:11:30 +0000 X-Inumbo-ID: 087d332a-f9bf-11e9-beca-bc764e2007e4 Received: from mail-qk1-x743.google.com (unknown [2607:f8b0:4864:20::743]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 087d332a-f9bf-11e9-beca-bc764e2007e4; Mon, 28 Oct 2019 20:10:48 +0000 (UTC) Received: by mail-qk1-x743.google.com with SMTP id y189so9776441qkc.3 for ; Mon, 28 Oct 2019 13:10:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziepe.ca; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rRggeho95DncGN+AT9iW7vh5wy6AMhDkR1ylS8BLo3U=; b=Z6FPqWY8xhqWHQ1Z1jE+fDSLBwgVSNxVQ8c9GC0HnqL5aTlEoyKukvRT0bLCjEmeO3 jdEy/Wt8g7+3oLmfDgjRUbD8LM8pbZV8IsUUjEWlnPSUG6xDdecc6GIDe9+nHnX7zFLj 94H+N0wC5u9gJGFk6UA3/FcBBNDzqp4Gm02HhEfQ+cIEhJMrbcnmOgivf8xIkm8iUAIm +FjxdgozOVglobkgBolzICZS/1dqujKTPGQE594CvbYjULQrckQQ2MpdIeH8TmMUu5Kv nJepfYhuvVSKeFYEijWIva8OuyV40mQb6yTlSYo5sOvsDPinwvNddf4UMo6en49hpBFG RQKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rRggeho95DncGN+AT9iW7vh5wy6AMhDkR1ylS8BLo3U=; b=Zgsai35LpE1Wn8OUtDe7BS3MLWhRwrSN4PIjToiLuy6BdmGp1CKE9HMMcwVy5kfpD8 8UlyQyWe6O8CRSCdmeLLTDQOeHt9iLfq2lqLpJq0lzJxxi3hKQovUk1XkD6cRpotW6zK 3FgrDeHxOSlfn67g7mw6zgo2/lNtZONfQU9QpsZqNGm5UzOh1Z6hS0jc9m0GjMniSALw bFE6xouAMPfcshz0DNoyzgDt0Dvgw7tlmHLs/cMM4SVt+3HhhejAmc8gZhYQK0McTbus 2kRdBCARE6XN6Q1Oa3hmWBDsqu90ZGKWUxCyg3tBhFBno3ZdQPZIlmNtAiFrOUsqnWwC ppsA== X-Gm-Message-State: APjAAAWkfw7+v7VMU8qai828//5Dlw0xKXolEwgYCgUKDGvo9KlfGdAr +N0RoVG15VWAmVHNin54SKYGcQ== X-Google-Smtp-Source: APXvYqy/RbSa3eEPDBlXrh1yGA/H58lhDB5xOYOKxwKTP9IyRxvM48S8YYUitKPIWnrC9+g+LsGdEA== X-Received: by 2002:a37:7c42:: with SMTP id x63mr13834831qkc.134.1572293448467; Mon, 28 Oct 2019 13:10:48 -0700 (PDT) Received: from ziepe.ca (hlfxns017vw-142-162-113-180.dhcp-dynamic.fibreop.ns.bellaliant.net. [142.162.113.180]) by smtp.gmail.com with ESMTPSA id o1sm7821372qtb.82.2019.10.28.13.10.43 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 28 Oct 2019 13:10:44 -0700 (PDT) Received: from jgg by mlx.ziepe.ca with local (Exim 4.90_1) (envelope-from ) id 1iPBLf-0001ge-Bn; Mon, 28 Oct 2019 17:10:43 -0300 From: Jason Gunthorpe To: linux-mm@kvack.org, Jerome Glisse , Ralph Campbell , John Hubbard , Felix.Kuehling@amd.com Date: Mon, 28 Oct 2019 17:10:24 -0300 Message-Id: <20191028201032.6352-8-jgg@ziepe.ca> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191028201032.6352-1-jgg@ziepe.ca> References: <20191028201032.6352-1-jgg@ziepe.ca> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v2 07/15] drm/radeon: use mmu_range_notifier_insert X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , David Zhou , Mike Marciniszyn , Stefano Stabellini , Oleksandr Andrushchenko , linux-rdma@vger.kernel.org, nouveau@lists.freedesktop.org, Dennis Dalessandro , amd-gfx@lists.freedesktop.org, Christoph Hellwig , Jason Gunthorpe , dri-devel@lists.freedesktop.org, Alex Deucher , xen-devel@lists.xenproject.org, Boris Ostrovsky , Petr Cvek , =?UTF-8?q?Christian=20K=C3=B6nig?= , Ben Skeggs Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" RnJvbTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgoKVGhlIG5ldyBBUEkgaXMg YW4gZXhhY3QgbWF0Y2ggZm9yIHRoZSBuZWVkcyBvZiByYWRlb24uCgpGb3Igc29tZSByZWFzb24g cmFkZW9uIHRyaWVzIHRvIHJlbW92ZSBvdmVybGFwcGluZyByYW5nZXMgZnJvbSB0aGUKaW50ZXJ2 YWwgdHJlZSwgYnV0IGludGVydmFsIHRyZWVzIChhbmQgbW11X3JhbmdlX25vdGlmaWVyX2luc2Vy dCkKc3VwcG9ydCBvdmVybGFwcGluZyByYW5nZXMgZGlyZWN0bHkuIFNpbXBseSBkZWxldGUgYWxs IHRoaXMgY29kZS4KClNpbmNlIHRoaXMgZHJpdmVyIGlzIG1pc3NpbmcgYSBpbnZhbGlkYXRlX3Jh bmdlX2VuZCBjYWxsYmFjaywgYnV0CnN0aWxsIGNhbGxzIGdldF91c2VyX3BhZ2VzKCksIGl0IGNh bm5vdCBiZSBjb3JyZWN0IGFnYWluc3QgYWxsIHJhY2VzLgoKQ2M6IEFsZXggRGV1Y2hlciA8YWxl eGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KQ2M6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5r b2VuaWdAYW1kLmNvbT4KQ2M6IERhdmlkIChDaHVuTWluZykgWmhvdSA8RGF2aWQxLlpob3VAYW1k LmNvbT4KQ2M6IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCkNjOiBQZXRyIEN2ZWsgPHBl dHJjdmVrY3pAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBKYXNvbiBHdW50aG9ycGUgPGpnZ0Bt ZWxsYW5veC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaCAgICB8ICAg OSArLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW4uYyB8IDIxOSArKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCAx NzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRl b24uaCBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKaW5kZXggZDU5YjAwNGY2Njk1 ODMuLjI3OTU5ZjNhY2UxMTUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3Jh ZGVvbi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKQEAgLTY4LDYgKzY4 LDEwIEBACiAjaW5jbHVkZSA8bGludXgvaGFzaHRhYmxlLmg+CiAjaW5jbHVkZSA8bGludXgvZG1h LWZlbmNlLmg+CiAKKyNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSCisjaW5jbHVkZSA8bGludXgv bW11X25vdGlmaWVyLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPGRybS90dG0vdHRtX2JvX2FwaS5o PgogI2luY2x1ZGUgPGRybS90dG0vdHRtX2JvX2RyaXZlci5oPgogI2luY2x1ZGUgPGRybS90dG0v dHRtX3BsYWNlbWVudC5oPgpAQCAtNTA5LDggKzUxMyw5IEBAIHN0cnVjdCByYWRlb25fYm8gewog CXN0cnVjdCB0dG1fYm9fa21hcF9vYmoJCWRtYV9idWZfdm1hcDsKIAlwaWRfdAkJCQlwaWQ7CiAK LQlzdHJ1Y3QgcmFkZW9uX21uCQkqbW47Ci0Jc3RydWN0IGxpc3RfaGVhZAkJbW5fbGlzdDsKKyNp ZmRlZiBDT05GSUdfTU1VX05PVElGSUVSCisJc3RydWN0IG1tdV9yYW5nZV9ub3RpZmllcglub3Rp ZmllcjsKKyNlbmRpZgogfTsKICNkZWZpbmUgZ2VtX3RvX3JhZGVvbl9ibyhnb2JqKSBjb250YWlu ZXJfb2YoKGdvYmopLCBzdHJ1Y3QgcmFkZW9uX2JvLCB0Ym8uYmFzZSkKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX21uLmMKaW5kZXggZGJhYjlhM2E5NjliOWUuLmQzZDQxZTIwYTY0OTIyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tbi5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uX21uLmMKQEAgLTM2LDEzMSArMzYsNTEgQEAKIAogI2luY2x1 ZGUgInJhZGVvbi5oIgogCi1zdHJ1Y3QgcmFkZW9uX21uIHsKLQlzdHJ1Y3QgbW11X25vdGlmaWVy CW1uOwotCi0JLyogb2JqZWN0cyBwcm90ZWN0ZWQgYnkgbG9jayAqLwotCXN0cnVjdCBtdXRleAkJ bG9jazsKLQlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQJb2JqZWN0czsKLX07Ci0KLXN0cnVjdCByYWRl b25fbW5fbm9kZSB7Ci0Jc3RydWN0IGludGVydmFsX3RyZWVfbm9kZQlpdDsKLQlzdHJ1Y3QgbGlz dF9oZWFkCQlib3M7Ci19OwotCiAvKioKLSAqIHJhZGVvbl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0IC0gY2FsbGJhY2sgdG8gbm90aWZ5IGFib3V0IG1tIGNoYW5nZQorICogcmFkZW9uX21uX2lu dmFsaWRhdGUgLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdlCiAgKgogICogQG1u OiBvdXIgbm90aWZpZXIKLSAqIEBtbjogdGhlIG1tIHRoaXMgY2FsbGJhY2sgaXMgYWJvdXQKLSAq IEBzdGFydDogc3RhcnQgb2YgdXBkYXRlZCByYW5nZQotICogQGVuZDogZW5kIG9mIHVwZGF0ZWQg cmFuZ2UKKyAqIEByYW5nZTogdGhlIFZNQSB1bmRlciBpbnZhbGlkYXRpb24KICAqCiAgKiBXZSBi bG9jayBmb3IgYWxsIEJPcyBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQgdG8gYmUgaWRsZSBhbmQKICAq IHVubWFwIHRoZW0gYnkgbW92ZSB0aGVtIGludG8gc3lzdGVtIGRvbWFpbiBhZ2Fpbi4KICAqLwot c3RhdGljIGludCByYWRlb25fbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25v dGlmaWVyICptbiwKLQkJCQljb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSkK K3N0YXRpYyBib29sIHJhZGVvbl9tbl9pbnZhbGlkYXRlKHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZp ZXIgKm1uLAorCQkJCSBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSwKKwkJ CQkgdW5zaWduZWQgbG9uZyBjdXJfc2VxKQogewotCXN0cnVjdCByYWRlb25fbW4gKnJtbiA9IGNv bnRhaW5lcl9vZihtbiwgc3RydWN0IHJhZGVvbl9tbiwgbW4pOworCXN0cnVjdCByYWRlb25fYm8g KmJvID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3QgcmFkZW9uX2JvLCBub3RpZmllcik7CiAJc3Ry dWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsgZmFsc2UsIGZhbHNlIH07Ci0Jc3RydWN0IGlu dGVydmFsX3RyZWVfbm9kZSAqaXQ7Ci0JdW5zaWduZWQgbG9uZyBlbmQ7Ci0JaW50IHJldCA9IDA7 Ci0KLQkvKiBub3RpZmljYXRpb24gaXMgZXhjbHVzaXZlLCBidXQgaW50ZXJ2YWwgaXMgaW5jbHVz aXZlICovCi0JZW5kID0gcmFuZ2UtPmVuZCAtIDE7Ci0KLQkvKiBUT0RPIHdlIHNob3VsZCBiZSBh YmxlIHRvIHNwbGl0IGxvY2tpbmcgZm9yIGludGVydmFsIHRyZWUgYW5kCi0JICogdGhlIHRlYXIg ZG93bi4KLQkgKi8KLQlpZiAobW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpCi0J CW11dGV4X2xvY2soJnJtbi0+bG9jayk7Ci0JZWxzZSBpZiAoIW11dGV4X3RyeWxvY2soJnJtbi0+ bG9jaykpCi0JCXJldHVybiAtRUFHQUlOOwotCi0JaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfZmly c3QoJnJtbi0+b2JqZWN0cywgcmFuZ2UtPnN0YXJ0LCBlbmQpOwotCXdoaWxlIChpdCkgewotCQlz dHJ1Y3QgcmFkZW9uX21uX25vZGUgKm5vZGU7Ci0JCXN0cnVjdCByYWRlb25fYm8gKmJvOwotCQls b25nIHI7Ci0KLQkJaWYgKCFtbXVfbm90aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHJhbmdlKSkgewot CQkJcmV0ID0gLUVBR0FJTjsKLQkJCWdvdG8gb3V0X3VubG9jazsKLQkJfQotCi0JCW5vZGUgPSBj b250YWluZXJfb2YoaXQsIHN0cnVjdCByYWRlb25fbW5fbm9kZSwgaXQpOwotCQlpdCA9IGludGVy dmFsX3RyZWVfaXRlcl9uZXh0KGl0LCByYW5nZS0+c3RhcnQsIGVuZCk7CisJbG9uZyByOwogCi0J CWxpc3RfZm9yX2VhY2hfZW50cnkoYm8sICZub2RlLT5ib3MsIG1uX2xpc3QpIHsKKwlpZiAoIWJv LT50Ym8udHRtIHx8IGJvLT50Ym8udHRtLT5zdGF0ZSAhPSB0dF9ib3VuZCkKKwkJcmV0dXJuIHRy dWU7CiAKLQkJCWlmICghYm8tPnRiby50dG0gfHwgYm8tPnRiby50dG0tPnN0YXRlICE9IHR0X2Jv dW5kKQotCQkJCWNvbnRpbnVlOworCWlmICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShy YW5nZSkpCisJCXJldHVybiBmYWxzZTsKIAotCQkJciA9IHJhZGVvbl9ib19yZXNlcnZlKGJvLCB0 cnVlKTsKLQkJCWlmIChyKSB7Ci0JCQkJRFJNX0VSUk9SKCIoJWxkKSBmYWlsZWQgdG8gcmVzZXJ2 ZSB1c2VyIGJvXG4iLCByKTsKLQkJCQljb250aW51ZTsKLQkJCX0KLQotCQkJciA9IGRtYV9yZXN2 X3dhaXRfdGltZW91dF9yY3UoYm8tPnRiby5iYXNlLnJlc3YsCi0JCQkJdHJ1ZSwgZmFsc2UsIE1B WF9TQ0hFRFVMRV9USU1FT1VUKTsKLQkJCWlmIChyIDw9IDApCi0JCQkJRFJNX0VSUk9SKCIoJWxk KSBmYWlsZWQgdG8gd2FpdCBmb3IgdXNlciBib1xuIiwgcik7Ci0KLQkJCXJhZGVvbl90dG1fcGxh Y2VtZW50X2Zyb21fZG9tYWluKGJvLCBSQURFT05fR0VNX0RPTUFJTl9DUFUpOwotCQkJciA9IHR0 bV9ib192YWxpZGF0ZSgmYm8tPnRibywgJmJvLT5wbGFjZW1lbnQsICZjdHgpOwotCQkJaWYgKHIp Ci0JCQkJRFJNX0VSUk9SKCIoJWxkKSBmYWlsZWQgdG8gdmFsaWRhdGUgdXNlciBib1xuIiwgcik7 Ci0KLQkJCXJhZGVvbl9ib191bnJlc2VydmUoYm8pOwotCQl9CisJciA9IHJhZGVvbl9ib19yZXNl cnZlKGJvLCB0cnVlKTsKKwlpZiAocikgeworCQlEUk1fRVJST1IoIiglbGQpIGZhaWxlZCB0byBy ZXNlcnZlIHVzZXIgYm9cbiIsIHIpOworCQlyZXR1cm4gdHJ1ZTsKIAl9Ci0JCi1vdXRfdW5sb2Nr OgotCW11dGV4X3VubG9jaygmcm1uLT5sb2NrKTsKLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRp YyB2b2lkIHJhZGVvbl9tbl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLCBzdHJ1Y3Qg bW1fc3RydWN0ICptbSkKLXsKLQlzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlIHJhbmdlID0gewot CQkubW0gPSBtbSwKLQkJLnN0YXJ0ID0gMCwKLQkJLmVuZCA9IFVMT05HX01BWCwKLQkJLmZsYWdz ID0gMCwKLQkJLmV2ZW50ID0gTU1VX05PVElGWV9VTk1BUCwKLQl9OwotCi0JcmFkZW9uX21uX2lu dmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW4sICZyYW5nZSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgbW11 X25vdGlmaWVyICpyYWRlb25fbW5fYWxsb2Nfbm90aWZpZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0p Ci17Ci0Jc3RydWN0IHJhZGVvbl9tbiAqcm1uOwogCi0Jcm1uID0ga3phbGxvYyhzaXplb2YoKnJt biksIEdGUF9LRVJORUwpOwotCWlmICghcm1uKQotCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsK KwlyID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShiby0+dGJvLmJhc2UucmVzdiwgdHJ1ZSwg ZmFsc2UsCisJCQkJICAgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOworCWlmIChyIDw9IDApCisJ CURSTV9FUlJPUigiKCVsZCkgZmFpbGVkIHRvIHdhaXQgZm9yIHVzZXIgYm9cbiIsIHIpOwogCi0J bXV0ZXhfaW5pdCgmcm1uLT5sb2NrKTsKLQlybW4tPm9iamVjdHMgPSBSQl9ST09UX0NBQ0hFRDsK LQlyZXR1cm4gJnJtbi0+bW47Ci19CisJcmFkZW9uX3R0bV9wbGFjZW1lbnRfZnJvbV9kb21haW4o Ym8sIFJBREVPTl9HRU1fRE9NQUlOX0NQVSk7CisJciA9IHR0bV9ib192YWxpZGF0ZSgmYm8tPnRi bywgJmJvLT5wbGFjZW1lbnQsICZjdHgpOworCWlmIChyKQorCQlEUk1fRVJST1IoIiglbGQpIGZh aWxlZCB0byB2YWxpZGF0ZSB1c2VyIGJvXG4iLCByKTsKIAotc3RhdGljIHZvaWQgcmFkZW9uX21u X2ZyZWVfbm90aWZpZXIoc3RydWN0IG1tdV9ub3RpZmllciAqbW4pCi17Ci0Ja2ZyZWUoY29udGFp bmVyX29mKG1uLCBzdHJ1Y3QgcmFkZW9uX21uLCBtbikpOworCXJhZGVvbl9ib191bnJlc2VydmUo Ym8pOworCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmll cl9vcHMgcmFkZW9uX21uX29wcyA9IHsKLQkucmVsZWFzZSA9IHJhZGVvbl9tbl9yZWxlYXNlLAot CS5pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0ID0gcmFkZW9uX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQsCi0JLmFsbG9jX25vdGlmaWVyID0gcmFkZW9uX21uX2FsbG9jX25vdGlmaWVyLAotCS5mcmVl X25vdGlmaWVyID0gcmFkZW9uX21uX2ZyZWVfbm90aWZpZXIsCitzdGF0aWMgY29uc3Qgc3RydWN0 IG1tdV9yYW5nZV9ub3RpZmllcl9vcHMgcmFkZW9uX21uX29wcyA9IHsKKwkuaW52YWxpZGF0ZSA9 IHJhZGVvbl9tbl9pbnZhbGlkYXRlLAogfTsKIAogLyoqCkBAIC0xNzQsNTEgKzk0LDIxIEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcyByYWRlb25fbW5fb3BzID0gewogICov CiBpbnQgcmFkZW9uX21uX3JlZ2lzdGVyKHN0cnVjdCByYWRlb25fYm8gKmJvLCB1bnNpZ25lZCBs b25nIGFkZHIpCiB7Ci0JdW5zaWduZWQgbG9uZyBlbmQgPSBhZGRyICsgcmFkZW9uX2JvX3NpemUo Ym8pIC0gMTsKLQlzdHJ1Y3QgbW11X25vdGlmaWVyICptbjsKLQlzdHJ1Y3QgcmFkZW9uX21uICpy bW47Ci0Jc3RydWN0IHJhZGVvbl9tbl9ub2RlICpub2RlID0gTlVMTDsKLQlzdHJ1Y3QgbGlzdF9o ZWFkIGJvczsKLQlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlICppdDsKLQotCW1uID0gbW11X25v dGlmaWVyX2dldCgmcmFkZW9uX21uX29wcywgY3VycmVudC0+bW0pOwotCWlmIChJU19FUlIobW4p KQotCQlyZXR1cm4gUFRSX0VSUihtbik7Ci0Jcm1uID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3Qg cmFkZW9uX21uLCBtbik7Ci0KLQlJTklUX0xJU1RfSEVBRCgmYm9zKTsKLQotCW11dGV4X2xvY2so JnJtbi0+bG9jayk7Ci0KLQl3aGlsZSAoKGl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZy bW4tPm9iamVjdHMsIGFkZHIsIGVuZCkpKSB7Ci0JCWtmcmVlKG5vZGUpOwotCQlub2RlID0gY29u dGFpbmVyX29mKGl0LCBzdHJ1Y3QgcmFkZW9uX21uX25vZGUsIGl0KTsKLQkJaW50ZXJ2YWxfdHJl ZV9yZW1vdmUoJm5vZGUtPml0LCAmcm1uLT5vYmplY3RzKTsKLQkJYWRkciA9IG1pbihpdC0+c3Rh cnQsIGFkZHIpOwotCQllbmQgPSBtYXgoaXQtPmxhc3QsIGVuZCk7Ci0JCWxpc3Rfc3BsaWNlKCZu b2RlLT5ib3MsICZib3MpOwotCX0KLQotCWlmICghbm9kZSkgewotCQlub2RlID0ga21hbGxvYyhz aXplb2Yoc3RydWN0IHJhZGVvbl9tbl9ub2RlKSwgR0ZQX0tFUk5FTCk7Ci0JCWlmICghbm9kZSkg ewotCQkJbXV0ZXhfdW5sb2NrKCZybW4tPmxvY2spOwotCQkJcmV0dXJuIC1FTk9NRU07Ci0JCX0K LQl9Ci0KLQliby0+bW4gPSBybW47Ci0KLQlub2RlLT5pdC5zdGFydCA9IGFkZHI7Ci0Jbm9kZS0+ aXQubGFzdCA9IGVuZDsKLQlJTklUX0xJU1RfSEVBRCgmbm9kZS0+Ym9zKTsKLQlsaXN0X3NwbGlj ZSgmYm9zLCAmbm9kZS0+Ym9zKTsKLQlsaXN0X2FkZCgmYm8tPm1uX2xpc3QsICZub2RlLT5ib3Mp OwotCi0JaW50ZXJ2YWxfdHJlZV9pbnNlcnQoJm5vZGUtPml0LCAmcm1uLT5vYmplY3RzKTsKLQot CW11dGV4X3VubG9jaygmcm1uLT5sb2NrKTsKLQorCWludCByZXQ7CisKKwliby0+bm90aWZpZXIu b3BzID0gJnJhZGVvbl9tbl9vcHM7CisJcmV0ID0gbW11X3JhbmdlX25vdGlmaWVyX2luc2VydCgm Ym8tPm5vdGlmaWVyLCBhZGRyLCByYWRlb25fYm9fc2l6ZShibyksCisJCQkJCWN1cnJlbnQtPm1t KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyoKKwkgKiBGSVhNRTogcmFkZW9uIGFw cGVhcnMgdG8gYWxsb3cgZ2V0X3VzZXJfcGFnZXMgdG8gcnVuIGR1cmluZworCSAqIGludmFsaWRh dGVfcmFuZ2Vfc3RhcnQvZW5kLCB3aGljaCBpcyBub3QgYSBzYWZlIHdheSB0byByZWFkIHRoZQor CSAqIFBURXMuIEl0IHNob3VsZCB1c2UgdGhlIG1tdV9yYW5nZV9yZWFkX2JlZ2luKCkgc2NoZW1l IGFyb3VuZCB0aGUKKwkgKiBnZXRfdXNlcl9wYWdlcyB0byBlbnN1cmUgdGhhdCB0aGUgUFRFcyBh cmUgcmVhZCBwcm9wZXJseQorCSAqLworCW1tdV9yYW5nZV9yZWFkX2JlZ2luKCZiby0+bm90aWZp ZXIpOwogCXJldHVybiAwOwogfQogCkBAIC0yMzEsMjcgKzEyMSw4IEBAIGludCByYWRlb25fbW5f cmVnaXN0ZXIoc3RydWN0IHJhZGVvbl9ibyAqYm8sIHVuc2lnbmVkIGxvbmcgYWRkcikKICAqLwog dm9pZCByYWRlb25fbW5fdW5yZWdpc3RlcihzdHJ1Y3QgcmFkZW9uX2JvICpibykKIHsKLQlzdHJ1 Y3QgcmFkZW9uX21uICpybW4gPSBiby0+bW47Ci0Jc3RydWN0IGxpc3RfaGVhZCAqaGVhZDsKLQot CWlmICghcm1uKQorCWlmICghYm8tPm5vdGlmaWVyLm1tKQogCQlyZXR1cm47Ci0KLQltdXRleF9s b2NrKCZybW4tPmxvY2spOwotCS8qIHNhdmUgdGhlIG5leHQgbGlzdCBlbnRyeSBmb3IgbGF0ZXIg Ki8KLQloZWFkID0gYm8tPm1uX2xpc3QubmV4dDsKLQotCWxpc3RfZGVsKCZiby0+bW5fbGlzdCk7 Ci0KLQlpZiAobGlzdF9lbXB0eShoZWFkKSkgewotCQlzdHJ1Y3QgcmFkZW9uX21uX25vZGUgKm5v ZGU7Ci0JCW5vZGUgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHJhZGVvbl9tbl9ub2RlLCBi b3MpOwotCQlpbnRlcnZhbF90cmVlX3JlbW92ZSgmbm9kZS0+aXQsICZybW4tPm9iamVjdHMpOwot CQlrZnJlZShub2RlKTsKLQl9Ci0KLQltdXRleF91bmxvY2soJnJtbi0+bG9jayk7Ci0KLQltbXVf bm90aWZpZXJfcHV0KCZybW4tPm1uKTsKLQliby0+bW4gPSBOVUxMOworCW1tdV9yYW5nZV9ub3Rp Zmllcl9yZW1vdmUoJmJvLT5ub3RpZmllcik7CisJYm8tPm5vdGlmaWVyLm1tID0gTlVMTDsKIH0K LS0gCjIuMjMuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw= 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=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 8E833CA9EC0 for ; Mon, 28 Oct 2019 20:17:22 +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 7260121721 for ; Mon, 28 Oct 2019 20:17:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7260121721 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ziepe.ca Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id DFAB56EA03; Mon, 28 Oct 2019 20:17:17 +0000 (UTC) Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by gabe.freedesktop.org (Postfix) with ESMTPS id 65C0789DC9 for ; Mon, 28 Oct 2019 20:10:49 +0000 (UTC) Received: by mail-qk1-x744.google.com with SMTP id m4so9747800qke.9 for ; Mon, 28 Oct 2019 13:10:49 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rRggeho95DncGN+AT9iW7vh5wy6AMhDkR1ylS8BLo3U=; b=b7oK3JC54xqrPvz1tG9gONVjyBZjQeJNeHjOzo6M61ZpI7RnQnwdqw7pEZkWbacFco x5syIAlsywyjVezHNhvqEBZ0EXqCUyb0SLzLy5+buGaPQzZJyaiItGPzunmGAC7VbpVj b+vypGNaH5PjyHW2gBCR6GFLzU/pypSIgWZpEwd54cytGH3b9O26U1xFCfokFDb9bZ5v mnJAXhGKtfXRKMX231BT4v1nuiyOzDKYRnlz9iqSByMQ3vI8GhxLaNE84ty8vQBZMFBd YOxpnt1XGbM8bf+6VEdBI3gBvvxm9f6V1xLsqRKw8UOuDkDOQ2EVKmDd3e7wgzRQff5H In2w== X-Gm-Message-State: APjAAAXsgcZX2IXm3KvW6fmc8VL8g9gT7RhA+/l9TamHAZvSmQP7sb3T dhpg0e9SKFPEUicMF9Dln/EUwg== X-Google-Smtp-Source: APXvYqy/RbSa3eEPDBlXrh1yGA/H58lhDB5xOYOKxwKTP9IyRxvM48S8YYUitKPIWnrC9+g+LsGdEA== X-Received: by 2002:a37:7c42:: with SMTP id x63mr13834831qkc.134.1572293448467; Mon, 28 Oct 2019 13:10:48 -0700 (PDT) Received: from ziepe.ca (hlfxns017vw-142-162-113-180.dhcp-dynamic.fibreop.ns.bellaliant.net. [142.162.113.180]) by smtp.gmail.com with ESMTPSA id o1sm7821372qtb.82.2019.10.28.13.10.43 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 28 Oct 2019 13:10:44 -0700 (PDT) Received: from jgg by mlx.ziepe.ca with local (Exim 4.90_1) (envelope-from ) id 1iPBLf-0001ge-Bn; Mon, 28 Oct 2019 17:10:43 -0300 From: Jason Gunthorpe To: linux-mm@kvack.org, Jerome Glisse , Ralph Campbell , John Hubbard , Felix.Kuehling@amd.com Subject: [PATCH v2 07/15] drm/radeon: use mmu_range_notifier_insert Date: Mon, 28 Oct 2019 17:10:24 -0300 Message-Id: <20191028201032.6352-8-jgg@ziepe.ca> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191028201032.6352-1-jgg@ziepe.ca> References: <20191028201032.6352-1-jgg@ziepe.ca> MIME-Version: 1.0 X-Mailman-Approved-At: Mon, 28 Oct 2019 20:17:16 +0000 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziepe.ca; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rRggeho95DncGN+AT9iW7vh5wy6AMhDkR1ylS8BLo3U=; b=Z6FPqWY8xhqWHQ1Z1jE+fDSLBwgVSNxVQ8c9GC0HnqL5aTlEoyKukvRT0bLCjEmeO3 jdEy/Wt8g7+3oLmfDgjRUbD8LM8pbZV8IsUUjEWlnPSUG6xDdecc6GIDe9+nHnX7zFLj 94H+N0wC5u9gJGFk6UA3/FcBBNDzqp4Gm02HhEfQ+cIEhJMrbcnmOgivf8xIkm8iUAIm +FjxdgozOVglobkgBolzICZS/1dqujKTPGQE594CvbYjULQrckQQ2MpdIeH8TmMUu5Kv nJepfYhuvVSKeFYEijWIva8OuyV40mQb6yTlSYo5sOvsDPinwvNddf4UMo6en49hpBFG RQKw== X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , David Zhou , Mike Marciniszyn , Stefano Stabellini , Oleksandr Andrushchenko , linux-rdma@vger.kernel.org, nouveau@lists.freedesktop.org, Dennis Dalessandro , amd-gfx@lists.freedesktop.org, Christoph Hellwig , Jason Gunthorpe , dri-devel@lists.freedesktop.org, Alex Deucher , xen-devel@lists.xenproject.org, Boris Ostrovsky , Petr Cvek , =?UTF-8?q?Christian=20K=C3=B6nig?= , Ben Skeggs Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" Message-ID: <20191028201024.LxhmjkJxoeSvCTYkz9uRk9tLlRIiziyHyyhD5SMQ6lw@z> RnJvbTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgoKVGhlIG5ldyBBUEkgaXMg YW4gZXhhY3QgbWF0Y2ggZm9yIHRoZSBuZWVkcyBvZiByYWRlb24uCgpGb3Igc29tZSByZWFzb24g cmFkZW9uIHRyaWVzIHRvIHJlbW92ZSBvdmVybGFwcGluZyByYW5nZXMgZnJvbSB0aGUKaW50ZXJ2 YWwgdHJlZSwgYnV0IGludGVydmFsIHRyZWVzIChhbmQgbW11X3JhbmdlX25vdGlmaWVyX2luc2Vy dCkKc3VwcG9ydCBvdmVybGFwcGluZyByYW5nZXMgZGlyZWN0bHkuIFNpbXBseSBkZWxldGUgYWxs IHRoaXMgY29kZS4KClNpbmNlIHRoaXMgZHJpdmVyIGlzIG1pc3NpbmcgYSBpbnZhbGlkYXRlX3Jh bmdlX2VuZCBjYWxsYmFjaywgYnV0CnN0aWxsIGNhbGxzIGdldF91c2VyX3BhZ2VzKCksIGl0IGNh bm5vdCBiZSBjb3JyZWN0IGFnYWluc3QgYWxsIHJhY2VzLgoKQ2M6IEFsZXggRGV1Y2hlciA8YWxl eGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KQ2M6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5r b2VuaWdAYW1kLmNvbT4KQ2M6IERhdmlkIChDaHVuTWluZykgWmhvdSA8RGF2aWQxLlpob3VAYW1k LmNvbT4KQ2M6IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCkNjOiBQZXRyIEN2ZWsgPHBl dHJjdmVrY3pAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBKYXNvbiBHdW50aG9ycGUgPGpnZ0Bt ZWxsYW5veC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaCAgICB8ICAg OSArLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW4uYyB8IDIxOSArKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCAx NzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRl b24uaCBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKaW5kZXggZDU5YjAwNGY2Njk1 ODMuLjI3OTU5ZjNhY2UxMTUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3Jh ZGVvbi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKQEAgLTY4LDYgKzY4 LDEwIEBACiAjaW5jbHVkZSA8bGludXgvaGFzaHRhYmxlLmg+CiAjaW5jbHVkZSA8bGludXgvZG1h LWZlbmNlLmg+CiAKKyNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSCisjaW5jbHVkZSA8bGludXgv bW11X25vdGlmaWVyLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPGRybS90dG0vdHRtX2JvX2FwaS5o PgogI2luY2x1ZGUgPGRybS90dG0vdHRtX2JvX2RyaXZlci5oPgogI2luY2x1ZGUgPGRybS90dG0v dHRtX3BsYWNlbWVudC5oPgpAQCAtNTA5LDggKzUxMyw5IEBAIHN0cnVjdCByYWRlb25fYm8gewog CXN0cnVjdCB0dG1fYm9fa21hcF9vYmoJCWRtYV9idWZfdm1hcDsKIAlwaWRfdAkJCQlwaWQ7CiAK LQlzdHJ1Y3QgcmFkZW9uX21uCQkqbW47Ci0Jc3RydWN0IGxpc3RfaGVhZAkJbW5fbGlzdDsKKyNp ZmRlZiBDT05GSUdfTU1VX05PVElGSUVSCisJc3RydWN0IG1tdV9yYW5nZV9ub3RpZmllcglub3Rp ZmllcjsKKyNlbmRpZgogfTsKICNkZWZpbmUgZ2VtX3RvX3JhZGVvbl9ibyhnb2JqKSBjb250YWlu ZXJfb2YoKGdvYmopLCBzdHJ1Y3QgcmFkZW9uX2JvLCB0Ym8uYmFzZSkKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX21uLmMKaW5kZXggZGJhYjlhM2E5NjliOWUuLmQzZDQxZTIwYTY0OTIyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tbi5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uX21uLmMKQEAgLTM2LDEzMSArMzYsNTEgQEAKIAogI2luY2x1 ZGUgInJhZGVvbi5oIgogCi1zdHJ1Y3QgcmFkZW9uX21uIHsKLQlzdHJ1Y3QgbW11X25vdGlmaWVy CW1uOwotCi0JLyogb2JqZWN0cyBwcm90ZWN0ZWQgYnkgbG9jayAqLwotCXN0cnVjdCBtdXRleAkJ bG9jazsKLQlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQJb2JqZWN0czsKLX07Ci0KLXN0cnVjdCByYWRl b25fbW5fbm9kZSB7Ci0Jc3RydWN0IGludGVydmFsX3RyZWVfbm9kZQlpdDsKLQlzdHJ1Y3QgbGlz dF9oZWFkCQlib3M7Ci19OwotCiAvKioKLSAqIHJhZGVvbl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0IC0gY2FsbGJhY2sgdG8gbm90aWZ5IGFib3V0IG1tIGNoYW5nZQorICogcmFkZW9uX21uX2lu dmFsaWRhdGUgLSBjYWxsYmFjayB0byBub3RpZnkgYWJvdXQgbW0gY2hhbmdlCiAgKgogICogQG1u OiBvdXIgbm90aWZpZXIKLSAqIEBtbjogdGhlIG1tIHRoaXMgY2FsbGJhY2sgaXMgYWJvdXQKLSAq IEBzdGFydDogc3RhcnQgb2YgdXBkYXRlZCByYW5nZQotICogQGVuZDogZW5kIG9mIHVwZGF0ZWQg cmFuZ2UKKyAqIEByYW5nZTogdGhlIFZNQSB1bmRlciBpbnZhbGlkYXRpb24KICAqCiAgKiBXZSBi bG9jayBmb3IgYWxsIEJPcyBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQgdG8gYmUgaWRsZSBhbmQKICAq IHVubWFwIHRoZW0gYnkgbW92ZSB0aGVtIGludG8gc3lzdGVtIGRvbWFpbiBhZ2Fpbi4KICAqLwot c3RhdGljIGludCByYWRlb25fbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25v dGlmaWVyICptbiwKLQkJCQljb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSkK K3N0YXRpYyBib29sIHJhZGVvbl9tbl9pbnZhbGlkYXRlKHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZp ZXIgKm1uLAorCQkJCSBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSwKKwkJ CQkgdW5zaWduZWQgbG9uZyBjdXJfc2VxKQogewotCXN0cnVjdCByYWRlb25fbW4gKnJtbiA9IGNv bnRhaW5lcl9vZihtbiwgc3RydWN0IHJhZGVvbl9tbiwgbW4pOworCXN0cnVjdCByYWRlb25fYm8g KmJvID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3QgcmFkZW9uX2JvLCBub3RpZmllcik7CiAJc3Ry dWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsgZmFsc2UsIGZhbHNlIH07Ci0Jc3RydWN0IGlu dGVydmFsX3RyZWVfbm9kZSAqaXQ7Ci0JdW5zaWduZWQgbG9uZyBlbmQ7Ci0JaW50IHJldCA9IDA7 Ci0KLQkvKiBub3RpZmljYXRpb24gaXMgZXhjbHVzaXZlLCBidXQgaW50ZXJ2YWwgaXMgaW5jbHVz aXZlICovCi0JZW5kID0gcmFuZ2UtPmVuZCAtIDE7Ci0KLQkvKiBUT0RPIHdlIHNob3VsZCBiZSBh YmxlIHRvIHNwbGl0IGxvY2tpbmcgZm9yIGludGVydmFsIHRyZWUgYW5kCi0JICogdGhlIHRlYXIg ZG93bi4KLQkgKi8KLQlpZiAobW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpCi0J CW11dGV4X2xvY2soJnJtbi0+bG9jayk7Ci0JZWxzZSBpZiAoIW11dGV4X3RyeWxvY2soJnJtbi0+ bG9jaykpCi0JCXJldHVybiAtRUFHQUlOOwotCi0JaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfZmly c3QoJnJtbi0+b2JqZWN0cywgcmFuZ2UtPnN0YXJ0LCBlbmQpOwotCXdoaWxlIChpdCkgewotCQlz dHJ1Y3QgcmFkZW9uX21uX25vZGUgKm5vZGU7Ci0JCXN0cnVjdCByYWRlb25fYm8gKmJvOwotCQls b25nIHI7Ci0KLQkJaWYgKCFtbXVfbm90aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHJhbmdlKSkgewot CQkJcmV0ID0gLUVBR0FJTjsKLQkJCWdvdG8gb3V0X3VubG9jazsKLQkJfQotCi0JCW5vZGUgPSBj b250YWluZXJfb2YoaXQsIHN0cnVjdCByYWRlb25fbW5fbm9kZSwgaXQpOwotCQlpdCA9IGludGVy dmFsX3RyZWVfaXRlcl9uZXh0KGl0LCByYW5nZS0+c3RhcnQsIGVuZCk7CisJbG9uZyByOwogCi0J CWxpc3RfZm9yX2VhY2hfZW50cnkoYm8sICZub2RlLT5ib3MsIG1uX2xpc3QpIHsKKwlpZiAoIWJv LT50Ym8udHRtIHx8IGJvLT50Ym8udHRtLT5zdGF0ZSAhPSB0dF9ib3VuZCkKKwkJcmV0dXJuIHRy dWU7CiAKLQkJCWlmICghYm8tPnRiby50dG0gfHwgYm8tPnRiby50dG0tPnN0YXRlICE9IHR0X2Jv dW5kKQotCQkJCWNvbnRpbnVlOworCWlmICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShy YW5nZSkpCisJCXJldHVybiBmYWxzZTsKIAotCQkJciA9IHJhZGVvbl9ib19yZXNlcnZlKGJvLCB0 cnVlKTsKLQkJCWlmIChyKSB7Ci0JCQkJRFJNX0VSUk9SKCIoJWxkKSBmYWlsZWQgdG8gcmVzZXJ2 ZSB1c2VyIGJvXG4iLCByKTsKLQkJCQljb250aW51ZTsKLQkJCX0KLQotCQkJciA9IGRtYV9yZXN2 X3dhaXRfdGltZW91dF9yY3UoYm8tPnRiby5iYXNlLnJlc3YsCi0JCQkJdHJ1ZSwgZmFsc2UsIE1B WF9TQ0hFRFVMRV9USU1FT1VUKTsKLQkJCWlmIChyIDw9IDApCi0JCQkJRFJNX0VSUk9SKCIoJWxk KSBmYWlsZWQgdG8gd2FpdCBmb3IgdXNlciBib1xuIiwgcik7Ci0KLQkJCXJhZGVvbl90dG1fcGxh Y2VtZW50X2Zyb21fZG9tYWluKGJvLCBSQURFT05fR0VNX0RPTUFJTl9DUFUpOwotCQkJciA9IHR0 bV9ib192YWxpZGF0ZSgmYm8tPnRibywgJmJvLT5wbGFjZW1lbnQsICZjdHgpOwotCQkJaWYgKHIp Ci0JCQkJRFJNX0VSUk9SKCIoJWxkKSBmYWlsZWQgdG8gdmFsaWRhdGUgdXNlciBib1xuIiwgcik7 Ci0KLQkJCXJhZGVvbl9ib191bnJlc2VydmUoYm8pOwotCQl9CisJciA9IHJhZGVvbl9ib19yZXNl cnZlKGJvLCB0cnVlKTsKKwlpZiAocikgeworCQlEUk1fRVJST1IoIiglbGQpIGZhaWxlZCB0byBy ZXNlcnZlIHVzZXIgYm9cbiIsIHIpOworCQlyZXR1cm4gdHJ1ZTsKIAl9Ci0JCi1vdXRfdW5sb2Nr OgotCW11dGV4X3VubG9jaygmcm1uLT5sb2NrKTsKLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRp YyB2b2lkIHJhZGVvbl9tbl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLCBzdHJ1Y3Qg bW1fc3RydWN0ICptbSkKLXsKLQlzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlIHJhbmdlID0gewot CQkubW0gPSBtbSwKLQkJLnN0YXJ0ID0gMCwKLQkJLmVuZCA9IFVMT05HX01BWCwKLQkJLmZsYWdz ID0gMCwKLQkJLmV2ZW50ID0gTU1VX05PVElGWV9VTk1BUCwKLQl9OwotCi0JcmFkZW9uX21uX2lu dmFsaWRhdGVfcmFuZ2Vfc3RhcnQobW4sICZyYW5nZSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgbW11 X25vdGlmaWVyICpyYWRlb25fbW5fYWxsb2Nfbm90aWZpZXIoc3RydWN0IG1tX3N0cnVjdCAqbW0p Ci17Ci0Jc3RydWN0IHJhZGVvbl9tbiAqcm1uOwogCi0Jcm1uID0ga3phbGxvYyhzaXplb2YoKnJt biksIEdGUF9LRVJORUwpOwotCWlmICghcm1uKQotCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsK KwlyID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShiby0+dGJvLmJhc2UucmVzdiwgdHJ1ZSwg ZmFsc2UsCisJCQkJICAgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOworCWlmIChyIDw9IDApCisJ CURSTV9FUlJPUigiKCVsZCkgZmFpbGVkIHRvIHdhaXQgZm9yIHVzZXIgYm9cbiIsIHIpOwogCi0J bXV0ZXhfaW5pdCgmcm1uLT5sb2NrKTsKLQlybW4tPm9iamVjdHMgPSBSQl9ST09UX0NBQ0hFRDsK LQlyZXR1cm4gJnJtbi0+bW47Ci19CisJcmFkZW9uX3R0bV9wbGFjZW1lbnRfZnJvbV9kb21haW4o Ym8sIFJBREVPTl9HRU1fRE9NQUlOX0NQVSk7CisJciA9IHR0bV9ib192YWxpZGF0ZSgmYm8tPnRi bywgJmJvLT5wbGFjZW1lbnQsICZjdHgpOworCWlmIChyKQorCQlEUk1fRVJST1IoIiglbGQpIGZh aWxlZCB0byB2YWxpZGF0ZSB1c2VyIGJvXG4iLCByKTsKIAotc3RhdGljIHZvaWQgcmFkZW9uX21u X2ZyZWVfbm90aWZpZXIoc3RydWN0IG1tdV9ub3RpZmllciAqbW4pCi17Ci0Ja2ZyZWUoY29udGFp bmVyX29mKG1uLCBzdHJ1Y3QgcmFkZW9uX21uLCBtbikpOworCXJhZGVvbl9ib191bnJlc2VydmUo Ym8pOworCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmll cl9vcHMgcmFkZW9uX21uX29wcyA9IHsKLQkucmVsZWFzZSA9IHJhZGVvbl9tbl9yZWxlYXNlLAot CS5pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0ID0gcmFkZW9uX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3Rh cnQsCi0JLmFsbG9jX25vdGlmaWVyID0gcmFkZW9uX21uX2FsbG9jX25vdGlmaWVyLAotCS5mcmVl X25vdGlmaWVyID0gcmFkZW9uX21uX2ZyZWVfbm90aWZpZXIsCitzdGF0aWMgY29uc3Qgc3RydWN0 IG1tdV9yYW5nZV9ub3RpZmllcl9vcHMgcmFkZW9uX21uX29wcyA9IHsKKwkuaW52YWxpZGF0ZSA9 IHJhZGVvbl9tbl9pbnZhbGlkYXRlLAogfTsKIAogLyoqCkBAIC0xNzQsNTEgKzk0LDIxIEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX29wcyByYWRlb25fbW5fb3BzID0gewogICov CiBpbnQgcmFkZW9uX21uX3JlZ2lzdGVyKHN0cnVjdCByYWRlb25fYm8gKmJvLCB1bnNpZ25lZCBs b25nIGFkZHIpCiB7Ci0JdW5zaWduZWQgbG9uZyBlbmQgPSBhZGRyICsgcmFkZW9uX2JvX3NpemUo Ym8pIC0gMTsKLQlzdHJ1Y3QgbW11X25vdGlmaWVyICptbjsKLQlzdHJ1Y3QgcmFkZW9uX21uICpy bW47Ci0Jc3RydWN0IHJhZGVvbl9tbl9ub2RlICpub2RlID0gTlVMTDsKLQlzdHJ1Y3QgbGlzdF9o ZWFkIGJvczsKLQlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlICppdDsKLQotCW1uID0gbW11X25v dGlmaWVyX2dldCgmcmFkZW9uX21uX29wcywgY3VycmVudC0+bW0pOwotCWlmIChJU19FUlIobW4p KQotCQlyZXR1cm4gUFRSX0VSUihtbik7Ci0Jcm1uID0gY29udGFpbmVyX29mKG1uLCBzdHJ1Y3Qg cmFkZW9uX21uLCBtbik7Ci0KLQlJTklUX0xJU1RfSEVBRCgmYm9zKTsKLQotCW11dGV4X2xvY2so JnJtbi0+bG9jayk7Ci0KLQl3aGlsZSAoKGl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZy bW4tPm9iamVjdHMsIGFkZHIsIGVuZCkpKSB7Ci0JCWtmcmVlKG5vZGUpOwotCQlub2RlID0gY29u dGFpbmVyX29mKGl0LCBzdHJ1Y3QgcmFkZW9uX21uX25vZGUsIGl0KTsKLQkJaW50ZXJ2YWxfdHJl ZV9yZW1vdmUoJm5vZGUtPml0LCAmcm1uLT5vYmplY3RzKTsKLQkJYWRkciA9IG1pbihpdC0+c3Rh cnQsIGFkZHIpOwotCQllbmQgPSBtYXgoaXQtPmxhc3QsIGVuZCk7Ci0JCWxpc3Rfc3BsaWNlKCZu b2RlLT5ib3MsICZib3MpOwotCX0KLQotCWlmICghbm9kZSkgewotCQlub2RlID0ga21hbGxvYyhz aXplb2Yoc3RydWN0IHJhZGVvbl9tbl9ub2RlKSwgR0ZQX0tFUk5FTCk7Ci0JCWlmICghbm9kZSkg ewotCQkJbXV0ZXhfdW5sb2NrKCZybW4tPmxvY2spOwotCQkJcmV0dXJuIC1FTk9NRU07Ci0JCX0K LQl9Ci0KLQliby0+bW4gPSBybW47Ci0KLQlub2RlLT5pdC5zdGFydCA9IGFkZHI7Ci0Jbm9kZS0+ aXQubGFzdCA9IGVuZDsKLQlJTklUX0xJU1RfSEVBRCgmbm9kZS0+Ym9zKTsKLQlsaXN0X3NwbGlj ZSgmYm9zLCAmbm9kZS0+Ym9zKTsKLQlsaXN0X2FkZCgmYm8tPm1uX2xpc3QsICZub2RlLT5ib3Mp OwotCi0JaW50ZXJ2YWxfdHJlZV9pbnNlcnQoJm5vZGUtPml0LCAmcm1uLT5vYmplY3RzKTsKLQot CW11dGV4X3VubG9jaygmcm1uLT5sb2NrKTsKLQorCWludCByZXQ7CisKKwliby0+bm90aWZpZXIu b3BzID0gJnJhZGVvbl9tbl9vcHM7CisJcmV0ID0gbW11X3JhbmdlX25vdGlmaWVyX2luc2VydCgm Ym8tPm5vdGlmaWVyLCBhZGRyLCByYWRlb25fYm9fc2l6ZShibyksCisJCQkJCWN1cnJlbnQtPm1t KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyoKKwkgKiBGSVhNRTogcmFkZW9uIGFw cGVhcnMgdG8gYWxsb3cgZ2V0X3VzZXJfcGFnZXMgdG8gcnVuIGR1cmluZworCSAqIGludmFsaWRh dGVfcmFuZ2Vfc3RhcnQvZW5kLCB3aGljaCBpcyBub3QgYSBzYWZlIHdheSB0byByZWFkIHRoZQor CSAqIFBURXMuIEl0IHNob3VsZCB1c2UgdGhlIG1tdV9yYW5nZV9yZWFkX2JlZ2luKCkgc2NoZW1l IGFyb3VuZCB0aGUKKwkgKiBnZXRfdXNlcl9wYWdlcyB0byBlbnN1cmUgdGhhdCB0aGUgUFRFcyBh cmUgcmVhZCBwcm9wZXJseQorCSAqLworCW1tdV9yYW5nZV9yZWFkX2JlZ2luKCZiby0+bm90aWZp ZXIpOwogCXJldHVybiAwOwogfQogCkBAIC0yMzEsMjcgKzEyMSw4IEBAIGludCByYWRlb25fbW5f cmVnaXN0ZXIoc3RydWN0IHJhZGVvbl9ibyAqYm8sIHVuc2lnbmVkIGxvbmcgYWRkcikKICAqLwog dm9pZCByYWRlb25fbW5fdW5yZWdpc3RlcihzdHJ1Y3QgcmFkZW9uX2JvICpibykKIHsKLQlzdHJ1 Y3QgcmFkZW9uX21uICpybW4gPSBiby0+bW47Ci0Jc3RydWN0IGxpc3RfaGVhZCAqaGVhZDsKLQot CWlmICghcm1uKQorCWlmICghYm8tPm5vdGlmaWVyLm1tKQogCQlyZXR1cm47Ci0KLQltdXRleF9s b2NrKCZybW4tPmxvY2spOwotCS8qIHNhdmUgdGhlIG5leHQgbGlzdCBlbnRyeSBmb3IgbGF0ZXIg Ki8KLQloZWFkID0gYm8tPm1uX2xpc3QubmV4dDsKLQotCWxpc3RfZGVsKCZiby0+bW5fbGlzdCk7 Ci0KLQlpZiAobGlzdF9lbXB0eShoZWFkKSkgewotCQlzdHJ1Y3QgcmFkZW9uX21uX25vZGUgKm5v ZGU7Ci0JCW5vZGUgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHJhZGVvbl9tbl9ub2RlLCBi b3MpOwotCQlpbnRlcnZhbF90cmVlX3JlbW92ZSgmbm9kZS0+aXQsICZybW4tPm9iamVjdHMpOwot CQlrZnJlZShub2RlKTsKLQl9Ci0KLQltdXRleF91bmxvY2soJnJtbi0+bG9jayk7Ci0KLQltbXVf bm90aWZpZXJfcHV0KCZybW4tPm1uKTsKLQliby0+bW4gPSBOVUxMOworCW1tdV9yYW5nZV9ub3Rp Zmllcl9yZW1vdmUoJmJvLT5ub3RpZmllcik7CisJYm8tPm5vdGlmaWVyLm1tID0gTlVMTDsKIH0K LS0gCjIuMjMuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4