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 750D4CA9EC3 for ; Mon, 28 Oct 2019 20:10:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4CFBF21744 for ; Mon, 28 Oct 2019 20:10:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=ziepe.ca header.i=@ziepe.ca header.b="NTlSsfHD" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727848AbfJ1UKq (ORCPT ); Mon, 28 Oct 2019 16:10:46 -0400 Received: from mail-qt1-f195.google.com ([209.85.160.195]:36443 "EHLO mail-qt1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727569AbfJ1UKq (ORCPT ); Mon, 28 Oct 2019 16:10:46 -0400 Received: by mail-qt1-f195.google.com with SMTP id x14so6223281qtq.3 for ; Mon, 28 Oct 2019 13:10:44 -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=oxTlwVkpt6xsZnGNNFXWlMYrq1FFLaGMPydq4/sN/5w=; b=NTlSsfHDOeTIWuMNnlPtSucXVB40h2KRrzDkHW+jL1verP1znZeXxUVr5ZxGRkg8kj nOSmfcIOektBvoWEXSXNLeWyu4bK7iCKjdDfsBhsxqpELeMVbud4AvVz2DgwJMKf3hW+ ftu0ovDWA7ugtM7z1PmtSEjj69N1bWOBzxzB9u5WoceWfOVgcCcy5OEDNJ3s5ZdRsF4y ycs6GleA0mRegnlWaa97Tl0s3MYXNiDC4JYWMfNhzPrKYg7D/FO+3LOmrV5pQwOQa/Q4 PyTFpj6wxBLgO6MJ1y1Ka7WlaxZeQNsi2I86naY8pTh62rgM7qRbB3znow/XgagUSw8Q XHLA== 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=oxTlwVkpt6xsZnGNNFXWlMYrq1FFLaGMPydq4/sN/5w=; b=RNq6JFlAVqYp8IWvw3vbLJO9YzctaoF5bCnRkSmRnXzHk5c/XAFDBw+diJB0WSX8Vl /L1StPZa3xTZ3knppixZXxasFW2kzeS3+GOHTP+bsElGynlUlD+nioqpGEBxK2B8Mm++ 61HckvrrFpgZvPj4gSXDeZdDzFZoIIQDr6A6JoS1HlPCGgN0reKH23RlvJGgtgul1ZNf 3PMoz2o36xVrYi2XqdN35S3bR43+jQFGanJpATk1BgaJlTOAkBDVO5szbR2k5dS3roSo TH/XvHqTBFzn2eZE+YGH0X8N0UtAD3/eGQgBde/o415qqNeS08kRr2tohPhgQAcgFh/W E+EA== X-Gm-Message-State: APjAAAV5g5b5W0oys4zx6ih4wx0i2aTOTy5Ou56kJGOTc0aHUcG7oXQf cw35K5wGfWnyWkOFFI31Ljrt9Q== X-Google-Smtp-Source: APXvYqwCdM3Q6SHuLXB8g1n/gZbUCOYrtwo97VEtbKno5VWn+17Xn4uDxHSdiC11RemjVHl4/2axPQ== X-Received: by 2002:ac8:5408:: with SMTP id b8mr327630qtq.164.1572293444231; Mon, 28 Oct 2019 13:10:44 -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 a23sm4534647qtp.85.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-0001gq-Ec; 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 09/15] xen/gntdev: use mmu_range_notifier_insert Date: Mon, 28 Oct 2019 17:10:26 -0300 Message-Id: <20191028201032.6352-10-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-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 gntdev simply wants to monitor a specific VMA for any notifier events, this can be done straightforwardly using mmu_range_notifier_insert() over the VMA's VA range. The notifier should be attached until the original VMA is destroyed. It is unclear if any of this is even sane, but at least a lot of duplicate code is removed. Cc: Oleksandr Andrushchenko Cc: Boris Ostrovsky Cc: xen-devel@lists.xenproject.org Cc: Juergen Gross Cc: Stefano Stabellini Signed-off-by: Jason Gunthorpe --- drivers/xen/gntdev-common.h | 8 +- drivers/xen/gntdev.c | 180 ++++++++++-------------------------- 2 files changed, 49 insertions(+), 139 deletions(-) diff --git a/drivers/xen/gntdev-common.h b/drivers/xen/gntdev-common.h index 2f8b949c3eeb14..b201fdd20b667b 100644 --- a/drivers/xen/gntdev-common.h +++ b/drivers/xen/gntdev-common.h @@ -21,15 +21,8 @@ struct gntdev_dmabuf_priv; struct gntdev_priv { /* Maps with visible offsets in the file descriptor. */ struct list_head maps; - /* - * Maps that are not visible; will be freed on munmap. - * Only populated if populate_freeable_maps == 1 - */ - struct list_head freeable_maps; /* lock protects maps and freeable_maps. */ struct mutex lock; - struct mm_struct *mm; - struct mmu_notifier mn; #ifdef CONFIG_XEN_GRANT_DMA_ALLOC /* Device for which DMA memory is allocated. */ @@ -49,6 +42,7 @@ struct gntdev_unmap_notify { }; struct gntdev_grant_map { + struct mmu_range_notifier notifier; struct list_head next; struct vm_area_struct *vma; int index; diff --git a/drivers/xen/gntdev.c b/drivers/xen/gntdev.c index a446a7221e13e9..12d626670bebbc 100644 --- a/drivers/xen/gntdev.c +++ b/drivers/xen/gntdev.c @@ -65,7 +65,6 @@ MODULE_PARM_DESC(limit, "Maximum number of grants that may be mapped by " static atomic_t pages_mapped = ATOMIC_INIT(0); static int use_ptemod; -#define populate_freeable_maps use_ptemod static int unmap_grant_pages(struct gntdev_grant_map *map, int offset, int pages); @@ -251,12 +250,6 @@ void gntdev_put_map(struct gntdev_priv *priv, struct gntdev_grant_map *map) evtchn_put(map->notify.event); } - if (populate_freeable_maps && priv) { - mutex_lock(&priv->lock); - list_del(&map->next); - mutex_unlock(&priv->lock); - } - if (map->pages && !use_ptemod) unmap_grant_pages(map, 0, map->count); gntdev_free_map(map); @@ -445,17 +438,9 @@ static void gntdev_vma_close(struct vm_area_struct *vma) struct gntdev_priv *priv = file->private_data; pr_debug("gntdev_vma_close %p\n", vma); - if (use_ptemod) { - /* It is possible that an mmu notifier could be running - * concurrently, so take priv->lock to ensure that the vma won't - * vanishing during the unmap_grant_pages call, since we will - * spin here until that completes. Such a concurrent call will - * not do any unmapping, since that has been done prior to - * closing the vma, but it may still iterate the unmap_ops list. - */ - mutex_lock(&priv->lock); + if (use_ptemod && map->vma == vma) { + mmu_range_notifier_remove(&map->notifier); map->vma = NULL; - mutex_unlock(&priv->lock); } vma->vm_private_data = NULL; gntdev_put_map(priv, map); @@ -477,109 +462,44 @@ static const struct vm_operations_struct gntdev_vmops = { /* ------------------------------------------------------------------ */ -static bool in_range(struct gntdev_grant_map *map, - unsigned long start, unsigned long end) -{ - if (!map->vma) - return false; - if (map->vma->vm_start >= end) - return false; - if (map->vma->vm_end <= start) - return false; - - return true; -} - -static int unmap_if_in_range(struct gntdev_grant_map *map, - unsigned long start, unsigned long end, - bool blockable) +static bool gntdev_invalidate(struct mmu_range_notifier *mn, + const struct mmu_notifier_range *range, + unsigned long cur_seq) { + struct gntdev_grant_map *map = + container_of(mn, struct gntdev_grant_map, notifier); unsigned long mstart, mend; int err; - if (!in_range(map, start, end)) - return 0; + if (!mmu_notifier_range_blockable(range)) + return false; - if (!blockable) - return -EAGAIN; + /* + * If the VMA is split or otherwise changed the notifier is not + * updated, but we don't want to process VA's outside the modified + * VMA. FIXME: It would be much more understandable to just prevent + * modifying the VMA in the first place. + */ + if (map->vma->vm_start >= range->end || + map->vma->vm_end <= range->start) + return true; - mstart = max(start, map->vma->vm_start); - mend = min(end, map->vma->vm_end); + mstart = max(range->start, map->vma->vm_start); + mend = min(range->end, map->vma->vm_end); pr_debug("map %d+%d (%lx %lx), range %lx %lx, mrange %lx %lx\n", map->index, map->count, map->vma->vm_start, map->vma->vm_end, - start, end, mstart, mend); + range->start, range->end, mstart, mend); err = unmap_grant_pages(map, (mstart - map->vma->vm_start) >> PAGE_SHIFT, (mend - mstart) >> PAGE_SHIFT); WARN_ON(err); - return 0; -} - -static int mn_invl_range_start(struct mmu_notifier *mn, - const struct mmu_notifier_range *range) -{ - struct gntdev_priv *priv = container_of(mn, struct gntdev_priv, mn); - struct gntdev_grant_map *map; - int ret = 0; - - if (mmu_notifier_range_blockable(range)) - mutex_lock(&priv->lock); - else if (!mutex_trylock(&priv->lock)) - return -EAGAIN; - - list_for_each_entry(map, &priv->maps, next) { - ret = unmap_if_in_range(map, range->start, range->end, - mmu_notifier_range_blockable(range)); - if (ret) - goto out_unlock; - } - list_for_each_entry(map, &priv->freeable_maps, next) { - ret = unmap_if_in_range(map, range->start, range->end, - mmu_notifier_range_blockable(range)); - if (ret) - goto out_unlock; - } - -out_unlock: - mutex_unlock(&priv->lock); - - return ret; -} - -static void mn_release(struct mmu_notifier *mn, - struct mm_struct *mm) -{ - struct gntdev_priv *priv = container_of(mn, struct gntdev_priv, mn); - struct gntdev_grant_map *map; - int err; - - mutex_lock(&priv->lock); - list_for_each_entry(map, &priv->maps, next) { - if (!map->vma) - continue; - pr_debug("map %d+%d (%lx %lx)\n", - map->index, map->count, - map->vma->vm_start, map->vma->vm_end); - err = unmap_grant_pages(map, /* offset */ 0, map->count); - WARN_ON(err); - } - list_for_each_entry(map, &priv->freeable_maps, next) { - if (!map->vma) - continue; - pr_debug("map %d+%d (%lx %lx)\n", - map->index, map->count, - map->vma->vm_start, map->vma->vm_end); - err = unmap_grant_pages(map, /* offset */ 0, map->count); - WARN_ON(err); - } - mutex_unlock(&priv->lock); + return true; } -static const struct mmu_notifier_ops gntdev_mmu_ops = { - .release = mn_release, - .invalidate_range_start = mn_invl_range_start, +static const struct mmu_range_notifier_ops gntdev_mmu_ops = { + .invalidate = gntdev_invalidate, }; /* ------------------------------------------------------------------ */ @@ -594,7 +514,6 @@ static int gntdev_open(struct inode *inode, struct file *flip) return -ENOMEM; INIT_LIST_HEAD(&priv->maps); - INIT_LIST_HEAD(&priv->freeable_maps); mutex_init(&priv->lock); #ifdef CONFIG_XEN_GNTDEV_DMABUF @@ -606,17 +525,6 @@ static int gntdev_open(struct inode *inode, struct file *flip) } #endif - if (use_ptemod) { - priv->mm = get_task_mm(current); - if (!priv->mm) { - kfree(priv); - return -ENOMEM; - } - priv->mn.ops = &gntdev_mmu_ops; - ret = mmu_notifier_register(&priv->mn, priv->mm); - mmput(priv->mm); - } - if (ret) { kfree(priv); return ret; @@ -653,16 +561,12 @@ static int gntdev_release(struct inode *inode, struct file *flip) list_del(&map->next); gntdev_put_map(NULL /* already removed */, map); } - WARN_ON(!list_empty(&priv->freeable_maps)); mutex_unlock(&priv->lock); #ifdef CONFIG_XEN_GNTDEV_DMABUF gntdev_dmabuf_fini(priv->dmabuf_priv); #endif - if (use_ptemod) - mmu_notifier_unregister(&priv->mn, priv->mm); - kfree(priv); return 0; } @@ -723,8 +627,6 @@ static long gntdev_ioctl_unmap_grant_ref(struct gntdev_priv *priv, map = gntdev_find_map_index(priv, op.index >> PAGE_SHIFT, op.count); if (map) { list_del(&map->next); - if (populate_freeable_maps) - list_add_tail(&map->next, &priv->freeable_maps); err = 0; } mutex_unlock(&priv->lock); @@ -1096,11 +998,6 @@ static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma) goto unlock_out; if (use_ptemod && map->vma) goto unlock_out; - if (use_ptemod && priv->mm != vma->vm_mm) { - pr_warn("Huh? Other mm?\n"); - goto unlock_out; - } - refcount_inc(&map->users); vma->vm_ops = &gntdev_vmops; @@ -1111,10 +1008,6 @@ static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma) vma->vm_flags |= VM_DONTCOPY; vma->vm_private_data = map; - - if (use_ptemod) - map->vma = vma; - if (map->flags) { if ((vma->vm_flags & VM_WRITE) && (map->flags & GNTMAP_readonly)) @@ -1125,8 +1018,28 @@ static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma) map->flags |= GNTMAP_readonly; } + if (use_ptemod) { + map->vma = vma; + err = mmu_range_notifier_insert_locked( + &map->notifier, vma->vm_start, + vma->vm_end - vma->vm_start, vma->vm_mm); + if (err) + goto out_unlock_put; + } mutex_unlock(&priv->lock); + /* + * gntdev takes the address of the PTE in find_grant_ptes() and passes + * it to the hypervisor in gntdev_map_grant_pages(). The purpose of + * the notifier is to prevent the hypervisor pointer to the PTE from + * going stale. + * + * Since this vma's mappings can't be touched without the mmap_sem, + * and we are holding it now, there is no need for the notifier_range + * locking pattern. + */ + mmu_range_read_begin(&map->notifier); + if (use_ptemod) { map->pages_vm_start = vma->vm_start; err = apply_to_page_range(vma->vm_mm, vma->vm_start, @@ -1175,8 +1088,11 @@ static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma) mutex_unlock(&priv->lock); out_put_map: if (use_ptemod) { - map->vma = NULL; unmap_grant_pages(map, 0, map->count); + if (map->vma) { + mmu_range_notifier_remove(&map->notifier); + map->vma = NULL; + } } gntdev_put_map(priv, map); return err; -- 2.23.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Gunthorpe Subject: [PATCH v2 09/15] xen/gntdev: use mmu_range_notifier_insert Date: Mon, 28 Oct 2019 17:10:26 -0300 Message-ID: <20191028201032.6352-10-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 RnJvbTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgoKZ250ZGV2IHNpbXBseSB3 YW50cyB0byBtb25pdG9yIGEgc3BlY2lmaWMgVk1BIGZvciBhbnkgbm90aWZpZXIgZXZlbnRzLAp0 aGlzIGNhbiBiZSBkb25lIHN0cmFpZ2h0Zm9yd2FyZGx5IHVzaW5nIG1tdV9yYW5nZV9ub3RpZmll cl9pbnNlcnQoKSBvdmVyCnRoZSBWTUEncyBWQSByYW5nZS4KClRoZSBub3RpZmllciBzaG91bGQg YmUgYXR0YWNoZWQgdW50aWwgdGhlIG9yaWdpbmFsIFZNQSBpcyBkZXN0cm95ZWQuCgpJdCBpcyB1 bmNsZWFyIGlmIGFueSBvZiB0aGlzIGlzIGV2ZW4gc2FuZSwgYnV0IGF0IGxlYXN0IGEgbG90IG9m IGR1cGxpY2F0ZQpjb2RlIGlzIHJlbW92ZWQuCgpDYzogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28g PG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgpDYzogQm9yaXMgT3N0cm92c2t5IDxi b3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KQ2M6IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0 Lm9yZwpDYzogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgpDYzogU3RlZmFubyBTdGFi ZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpTaWduZWQtb2ZmLWJ5OiBKYXNvbiBHdW50 aG9ycGUgPGpnZ0BtZWxsYW5veC5jb20+Ci0tLQogZHJpdmVycy94ZW4vZ250ZGV2LWNvbW1vbi5o IHwgICA4ICstCiBkcml2ZXJzL3hlbi9nbnRkZXYuYyAgICAgICAgfCAxODAgKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMo KyksIDEzOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9nbnRkZXYtY29t bW9uLmggYi9kcml2ZXJzL3hlbi9nbnRkZXYtY29tbW9uLmgKaW5kZXggMmY4Yjk0OWMzZWViMTQu LmIyMDFmZGQyMGI2NjdiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9nbnRkZXYtY29tbW9uLmgK KysrIGIvZHJpdmVycy94ZW4vZ250ZGV2LWNvbW1vbi5oCkBAIC0yMSwxNSArMjEsOCBAQCBzdHJ1 Y3QgZ250ZGV2X2RtYWJ1Zl9wcml2Owogc3RydWN0IGdudGRldl9wcml2IHsKIAkvKiBNYXBzIHdp dGggdmlzaWJsZSBvZmZzZXRzIGluIHRoZSBmaWxlIGRlc2NyaXB0b3IuICovCiAJc3RydWN0IGxp c3RfaGVhZCBtYXBzOwotCS8qCi0JICogTWFwcyB0aGF0IGFyZSBub3QgdmlzaWJsZTsgd2lsbCBi ZSBmcmVlZCBvbiBtdW5tYXAuCi0JICogT25seSBwb3B1bGF0ZWQgaWYgcG9wdWxhdGVfZnJlZWFi bGVfbWFwcyA9PSAxCi0JICovCi0Jc3RydWN0IGxpc3RfaGVhZCBmcmVlYWJsZV9tYXBzOwogCS8q IGxvY2sgcHJvdGVjdHMgbWFwcyBhbmQgZnJlZWFibGVfbWFwcy4gKi8KIAlzdHJ1Y3QgbXV0ZXgg bG9jazsKLQlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKLQlzdHJ1Y3QgbW11X25vdGlmaWVyIG1uOwog CiAjaWZkZWYgQ09ORklHX1hFTl9HUkFOVF9ETUFfQUxMT0MKIAkvKiBEZXZpY2UgZm9yIHdoaWNo IERNQSBtZW1vcnkgaXMgYWxsb2NhdGVkLiAqLwpAQCAtNDksNiArNDIsNyBAQCBzdHJ1Y3QgZ250 ZGV2X3VubWFwX25vdGlmeSB7CiB9OwogCiBzdHJ1Y3QgZ250ZGV2X2dyYW50X21hcCB7CisJc3Ry dWN0IG1tdV9yYW5nZV9ub3RpZmllciBub3RpZmllcjsKIAlzdHJ1Y3QgbGlzdF9oZWFkIG5leHQ7 CiAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7CiAJaW50IGluZGV4OwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy94ZW4vZ250ZGV2LmMgYi9kcml2ZXJzL3hlbi9nbnRkZXYuYwppbmRleCBhNDQ2YTcy MjFlMTNlOS4uMTJkNjI2NjcwYmViYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2dudGRldi5j CisrKyBiL2RyaXZlcnMveGVuL2dudGRldi5jCkBAIC02NSw3ICs2NSw2IEBAIE1PRFVMRV9QQVJN X0RFU0MobGltaXQsICJNYXhpbXVtIG51bWJlciBvZiBncmFudHMgdGhhdCBtYXkgYmUgbWFwcGVk IGJ5ICIKIHN0YXRpYyBhdG9taWNfdCBwYWdlc19tYXBwZWQgPSBBVE9NSUNfSU5JVCgwKTsKIAog c3RhdGljIGludCB1c2VfcHRlbW9kOwotI2RlZmluZSBwb3B1bGF0ZV9mcmVlYWJsZV9tYXBzIHVz ZV9wdGVtb2QKIAogc3RhdGljIGludCB1bm1hcF9ncmFudF9wYWdlcyhzdHJ1Y3QgZ250ZGV2X2dy YW50X21hcCAqbWFwLAogCQkJICAgICBpbnQgb2Zmc2V0LCBpbnQgcGFnZXMpOwpAQCAtMjUxLDEy ICsyNTAsNiBAQCB2b2lkIGdudGRldl9wdXRfbWFwKHN0cnVjdCBnbnRkZXZfcHJpdiAqcHJpdiwg c3RydWN0IGdudGRldl9ncmFudF9tYXAgKm1hcCkKIAkJZXZ0Y2huX3B1dChtYXAtPm5vdGlmeS5l dmVudCk7CiAJfQogCi0JaWYgKHBvcHVsYXRlX2ZyZWVhYmxlX21hcHMgJiYgcHJpdikgewotCQlt dXRleF9sb2NrKCZwcml2LT5sb2NrKTsKLQkJbGlzdF9kZWwoJm1hcC0+bmV4dCk7Ci0JCW11dGV4 X3VubG9jaygmcHJpdi0+bG9jayk7Ci0JfQotCiAJaWYgKG1hcC0+cGFnZXMgJiYgIXVzZV9wdGVt b2QpCiAJCXVubWFwX2dyYW50X3BhZ2VzKG1hcCwgMCwgbWFwLT5jb3VudCk7CiAJZ250ZGV2X2Zy ZWVfbWFwKG1hcCk7CkBAIC00NDUsMTcgKzQzOCw5IEBAIHN0YXRpYyB2b2lkIGdudGRldl92bWFf Y2xvc2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCiAJc3RydWN0IGdudGRldl9wcml2ICpw cml2ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwogCiAJcHJfZGVidWcoImdudGRldl92bWFfY2xvc2Ug JXBcbiIsIHZtYSk7Ci0JaWYgKHVzZV9wdGVtb2QpIHsKLQkJLyogSXQgaXMgcG9zc2libGUgdGhh dCBhbiBtbXUgbm90aWZpZXIgY291bGQgYmUgcnVubmluZwotCQkgKiBjb25jdXJyZW50bHksIHNv IHRha2UgcHJpdi0+bG9jayB0byBlbnN1cmUgdGhhdCB0aGUgdm1hIHdvbid0Ci0JCSAqIHZhbmlz aGluZyBkdXJpbmcgdGhlIHVubWFwX2dyYW50X3BhZ2VzIGNhbGwsIHNpbmNlIHdlIHdpbGwKLQkJ ICogc3BpbiBoZXJlIHVudGlsIHRoYXQgY29tcGxldGVzLiBTdWNoIGEgY29uY3VycmVudCBjYWxs IHdpbGwKLQkJICogbm90IGRvIGFueSB1bm1hcHBpbmcsIHNpbmNlIHRoYXQgaGFzIGJlZW4gZG9u ZSBwcmlvciB0bwotCQkgKiBjbG9zaW5nIHRoZSB2bWEsIGJ1dCBpdCBtYXkgc3RpbGwgaXRlcmF0 ZSB0aGUgdW5tYXBfb3BzIGxpc3QuCi0JCSAqLwotCQltdXRleF9sb2NrKCZwcml2LT5sb2NrKTsK KwlpZiAodXNlX3B0ZW1vZCAmJiBtYXAtPnZtYSA9PSB2bWEpIHsKKwkJbW11X3JhbmdlX25vdGlm aWVyX3JlbW92ZSgmbWFwLT5ub3RpZmllcik7CiAJCW1hcC0+dm1hID0gTlVMTDsKLQkJbXV0ZXhf dW5sb2NrKCZwcml2LT5sb2NrKTsKIAl9CiAJdm1hLT52bV9wcml2YXRlX2RhdGEgPSBOVUxMOwog CWdudGRldl9wdXRfbWFwKHByaXYsIG1hcCk7CkBAIC00NzcsMTA5ICs0NjIsNDQgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBnbnRkZXZfdm1vcHMgPSB7CiAKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSAqLwogCi1zdGF0aWMgYm9vbCBpbl9yYW5nZShzdHJ1Y3QgZ250ZGV2X2dyYW50 X21hcCAqbWFwLAotCQkJICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBl bmQpCi17Ci0JaWYgKCFtYXAtPnZtYSkKLQkJcmV0dXJuIGZhbHNlOwotCWlmIChtYXAtPnZtYS0+ dm1fc3RhcnQgPj0gZW5kKQotCQlyZXR1cm4gZmFsc2U7Ci0JaWYgKG1hcC0+dm1hLT52bV9lbmQg PD0gc3RhcnQpCi0JCXJldHVybiBmYWxzZTsKLQotCXJldHVybiB0cnVlOwotfQotCi1zdGF0aWMg aW50IHVubWFwX2lmX2luX3JhbmdlKHN0cnVjdCBnbnRkZXZfZ3JhbnRfbWFwICptYXAsCi0JCQkg ICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwKLQkJCSAgICAgIGJv b2wgYmxvY2thYmxlKQorc3RhdGljIGJvb2wgZ250ZGV2X2ludmFsaWRhdGUoc3RydWN0IG1tdV9y YW5nZV9ub3RpZmllciAqbW4sCisJCQkgICAgICBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3Jh bmdlICpyYW5nZSwKKwkJCSAgICAgIHVuc2lnbmVkIGxvbmcgY3VyX3NlcSkKIHsKKwlzdHJ1Y3Qg Z250ZGV2X2dyYW50X21hcCAqbWFwID0KKwkJY29udGFpbmVyX29mKG1uLCBzdHJ1Y3QgZ250ZGV2 X2dyYW50X21hcCwgbm90aWZpZXIpOwogCXVuc2lnbmVkIGxvbmcgbXN0YXJ0LCBtZW5kOwogCWlu dCBlcnI7CiAKLQlpZiAoIWluX3JhbmdlKG1hcCwgc3RhcnQsIGVuZCkpCi0JCXJldHVybiAwOwor CWlmICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpCisJCXJldHVybiBmYWxz ZTsKIAotCWlmICghYmxvY2thYmxlKQotCQlyZXR1cm4gLUVBR0FJTjsKKwkvKgorCSAqIElmIHRo ZSBWTUEgaXMgc3BsaXQgb3Igb3RoZXJ3aXNlIGNoYW5nZWQgdGhlIG5vdGlmaWVyIGlzIG5vdAor CSAqIHVwZGF0ZWQsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIHByb2Nlc3MgVkEncyBvdXRzaWRlIHRo ZSBtb2RpZmllZAorCSAqIFZNQS4gRklYTUU6IEl0IHdvdWxkIGJlIG11Y2ggbW9yZSB1bmRlcnN0 YW5kYWJsZSB0byBqdXN0IHByZXZlbnQKKwkgKiBtb2RpZnlpbmcgdGhlIFZNQSBpbiB0aGUgZmly c3QgcGxhY2UuCisJICovCisJaWYgKG1hcC0+dm1hLT52bV9zdGFydCA+PSByYW5nZS0+ZW5kIHx8 CisJICAgIG1hcC0+dm1hLT52bV9lbmQgPD0gcmFuZ2UtPnN0YXJ0KQorCQlyZXR1cm4gdHJ1ZTsK IAotCW1zdGFydCA9IG1heChzdGFydCwgbWFwLT52bWEtPnZtX3N0YXJ0KTsKLQltZW5kICAgPSBt aW4oZW5kLCAgIG1hcC0+dm1hLT52bV9lbmQpOworCW1zdGFydCA9IG1heChyYW5nZS0+c3RhcnQs IG1hcC0+dm1hLT52bV9zdGFydCk7CisJbWVuZCA9IG1pbihyYW5nZS0+ZW5kLCBtYXAtPnZtYS0+ dm1fZW5kKTsKIAlwcl9kZWJ1ZygibWFwICVkKyVkICglbHggJWx4KSwgcmFuZ2UgJWx4ICVseCwg bXJhbmdlICVseCAlbHhcbiIsCiAJCQltYXAtPmluZGV4LCBtYXAtPmNvdW50LAogCQkJbWFwLT52 bWEtPnZtX3N0YXJ0LCBtYXAtPnZtYS0+dm1fZW5kLAotCQkJc3RhcnQsIGVuZCwgbXN0YXJ0LCBt ZW5kKTsKKwkJCXJhbmdlLT5zdGFydCwgcmFuZ2UtPmVuZCwgbXN0YXJ0LCBtZW5kKTsKIAllcnIg PSB1bm1hcF9ncmFudF9wYWdlcyhtYXAsCiAJCQkJKG1zdGFydCAtIG1hcC0+dm1hLT52bV9zdGFy dCkgPj4gUEFHRV9TSElGVCwKIAkJCQkobWVuZCAtIG1zdGFydCkgPj4gUEFHRV9TSElGVCk7CiAJ V0FSTl9PTihlcnIpOwogCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgbW5faW52bF9yYW5n ZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKLQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qg bW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSkKLXsKLQlzdHJ1Y3QgZ250ZGV2X3ByaXYgKnByaXYg PSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBnbnRkZXZfcHJpdiwgbW4pOwotCXN0cnVjdCBnbnRk ZXZfZ3JhbnRfbWFwICptYXA7Ci0JaW50IHJldCA9IDA7Ci0KLQlpZiAobW11X25vdGlmaWVyX3Jh bmdlX2Jsb2NrYWJsZShyYW5nZSkpCi0JCW11dGV4X2xvY2soJnByaXYtPmxvY2spOwotCWVsc2Ug aWYgKCFtdXRleF90cnlsb2NrKCZwcml2LT5sb2NrKSkKLQkJcmV0dXJuIC1FQUdBSU47Ci0KLQls aXN0X2Zvcl9lYWNoX2VudHJ5KG1hcCwgJnByaXYtPm1hcHMsIG5leHQpIHsKLQkJcmV0ID0gdW5t YXBfaWZfaW5fcmFuZ2UobWFwLCByYW5nZS0+c3RhcnQsIHJhbmdlLT5lbmQsCi0JCQkJCW1tdV9u b3RpZmllcl9yYW5nZV9ibG9ja2FibGUocmFuZ2UpKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gb3V0 X3VubG9jazsKLQl9Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShtYXAsICZwcml2LT5mcmVlYWJsZV9t YXBzLCBuZXh0KSB7Ci0JCXJldCA9IHVubWFwX2lmX2luX3JhbmdlKG1hcCwgcmFuZ2UtPnN0YXJ0 LCByYW5nZS0+ZW5kLAotCQkJCQltbXVfbm90aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHJhbmdlKSk7 Ci0JCWlmIChyZXQpCi0JCQlnb3RvIG91dF91bmxvY2s7Ci0JfQotCi1vdXRfdW5sb2NrOgotCW11 dGV4X3VubG9jaygmcHJpdi0+bG9jayk7Ci0KLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgdm9p ZCBtbl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAotCQkgICAgICAgc3RydWN0IG1t X3N0cnVjdCAqbW0pCi17Ci0Jc3RydWN0IGdudGRldl9wcml2ICpwcml2ID0gY29udGFpbmVyX29m KG1uLCBzdHJ1Y3QgZ250ZGV2X3ByaXYsIG1uKTsKLQlzdHJ1Y3QgZ250ZGV2X2dyYW50X21hcCAq bWFwOwotCWludCBlcnI7Ci0KLQltdXRleF9sb2NrKCZwcml2LT5sb2NrKTsKLQlsaXN0X2Zvcl9l YWNoX2VudHJ5KG1hcCwgJnByaXYtPm1hcHMsIG5leHQpIHsKLQkJaWYgKCFtYXAtPnZtYSkKLQkJ CWNvbnRpbnVlOwotCQlwcl9kZWJ1ZygibWFwICVkKyVkICglbHggJWx4KVxuIiwKLQkJCQltYXAt PmluZGV4LCBtYXAtPmNvdW50LAotCQkJCW1hcC0+dm1hLT52bV9zdGFydCwgbWFwLT52bWEtPnZt X2VuZCk7Ci0JCWVyciA9IHVubWFwX2dyYW50X3BhZ2VzKG1hcCwgLyogb2Zmc2V0ICovIDAsIG1h cC0+Y291bnQpOwotCQlXQVJOX09OKGVycik7Ci0JfQotCWxpc3RfZm9yX2VhY2hfZW50cnkobWFw LCAmcHJpdi0+ZnJlZWFibGVfbWFwcywgbmV4dCkgewotCQlpZiAoIW1hcC0+dm1hKQotCQkJY29u dGludWU7Ci0JCXByX2RlYnVnKCJtYXAgJWQrJWQgKCVseCAlbHgpXG4iLAotCQkJCW1hcC0+aW5k ZXgsIG1hcC0+Y291bnQsCi0JCQkJbWFwLT52bWEtPnZtX3N0YXJ0LCBtYXAtPnZtYS0+dm1fZW5k KTsKLQkJZXJyID0gdW5tYXBfZ3JhbnRfcGFnZXMobWFwLCAvKiBvZmZzZXQgKi8gMCwgbWFwLT5j b3VudCk7Ci0JCVdBUk5fT04oZXJyKTsKLQl9Ci0JbXV0ZXhfdW5sb2NrKCZwcml2LT5sb2NrKTsK KwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3Bz IGdudGRldl9tbXVfb3BzID0gewotCS5yZWxlYXNlICAgICAgICAgICAgICAgID0gbW5fcmVsZWFz ZSwKLQkuaW52YWxpZGF0ZV9yYW5nZV9zdGFydCA9IG1uX2ludmxfcmFuZ2Vfc3RhcnQsCitzdGF0 aWMgY29uc3Qgc3RydWN0IG1tdV9yYW5nZV9ub3RpZmllcl9vcHMgZ250ZGV2X21tdV9vcHMgPSB7 CisJLmludmFsaWRhdGUgPSBnbnRkZXZfaW52YWxpZGF0ZSwKIH07CiAKIC8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAq LwpAQCAtNTk0LDcgKzUxNCw2IEBAIHN0YXRpYyBpbnQgZ250ZGV2X29wZW4oc3RydWN0IGlub2Rl ICppbm9kZSwgc3RydWN0IGZpbGUgKmZsaXApCiAJCXJldHVybiAtRU5PTUVNOwogCiAJSU5JVF9M SVNUX0hFQUQoJnByaXYtPm1hcHMpOwotCUlOSVRfTElTVF9IRUFEKCZwcml2LT5mcmVlYWJsZV9t YXBzKTsKIAltdXRleF9pbml0KCZwcml2LT5sb2NrKTsKIAogI2lmZGVmIENPTkZJR19YRU5fR05U REVWX0RNQUJVRgpAQCAtNjA2LDE3ICs1MjUsNiBAQCBzdGF0aWMgaW50IGdudGRldl9vcGVuKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmbGlwKQogCX0KICNlbmRpZgogCi0JaWYg KHVzZV9wdGVtb2QpIHsKLQkJcHJpdi0+bW0gPSBnZXRfdGFza19tbShjdXJyZW50KTsKLQkJaWYg KCFwcml2LT5tbSkgewotCQkJa2ZyZWUocHJpdik7Ci0JCQlyZXR1cm4gLUVOT01FTTsKLQkJfQot CQlwcml2LT5tbi5vcHMgPSAmZ250ZGV2X21tdV9vcHM7Ci0JCXJldCA9IG1tdV9ub3RpZmllcl9y ZWdpc3RlcigmcHJpdi0+bW4sIHByaXYtPm1tKTsKLQkJbW1wdXQocHJpdi0+bW0pOwotCX0KLQog CWlmIChyZXQpIHsKIAkJa2ZyZWUocHJpdik7CiAJCXJldHVybiByZXQ7CkBAIC02NTMsMTYgKzU2 MSwxMiBAQCBzdGF0aWMgaW50IGdudGRldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0 cnVjdCBmaWxlICpmbGlwKQogCQlsaXN0X2RlbCgmbWFwLT5uZXh0KTsKIAkJZ250ZGV2X3B1dF9t YXAoTlVMTCAvKiBhbHJlYWR5IHJlbW92ZWQgKi8sIG1hcCk7CiAJfQotCVdBUk5fT04oIWxpc3Rf ZW1wdHkoJnByaXYtPmZyZWVhYmxlX21hcHMpKTsKIAltdXRleF91bmxvY2soJnByaXYtPmxvY2sp OwogCiAjaWZkZWYgQ09ORklHX1hFTl9HTlRERVZfRE1BQlVGCiAJZ250ZGV2X2RtYWJ1Zl9maW5p KHByaXYtPmRtYWJ1Zl9wcml2KTsKICNlbmRpZgogCi0JaWYgKHVzZV9wdGVtb2QpCi0JCW1tdV9u b3RpZmllcl91bnJlZ2lzdGVyKCZwcml2LT5tbiwgcHJpdi0+bW0pOwotCiAJa2ZyZWUocHJpdik7 CiAJcmV0dXJuIDA7CiB9CkBAIC03MjMsOCArNjI3LDYgQEAgc3RhdGljIGxvbmcgZ250ZGV2X2lv Y3RsX3VubWFwX2dyYW50X3JlZihzdHJ1Y3QgZ250ZGV2X3ByaXYgKnByaXYsCiAJbWFwID0gZ250 ZGV2X2ZpbmRfbWFwX2luZGV4KHByaXYsIG9wLmluZGV4ID4+IFBBR0VfU0hJRlQsIG9wLmNvdW50 KTsKIAlpZiAobWFwKSB7CiAJCWxpc3RfZGVsKCZtYXAtPm5leHQpOwotCQlpZiAocG9wdWxhdGVf ZnJlZWFibGVfbWFwcykKLQkJCWxpc3RfYWRkX3RhaWwoJm1hcC0+bmV4dCwgJnByaXYtPmZyZWVh YmxlX21hcHMpOwogCQllcnIgPSAwOwogCX0KIAltdXRleF91bmxvY2soJnByaXYtPmxvY2spOwpA QCAtMTA5NiwxMSArOTk4LDYgQEAgc3RhdGljIGludCBnbnRkZXZfbW1hcChzdHJ1Y3QgZmlsZSAq ZmxpcCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCiAJCWdvdG8gdW5sb2NrX291dDsKIAlp ZiAodXNlX3B0ZW1vZCAmJiBtYXAtPnZtYSkKIAkJZ290byB1bmxvY2tfb3V0OwotCWlmICh1c2Vf cHRlbW9kICYmIHByaXYtPm1tICE9IHZtYS0+dm1fbW0pIHsKLQkJcHJfd2FybigiSHVoPyBPdGhl ciBtbT9cbiIpOwotCQlnb3RvIHVubG9ja19vdXQ7Ci0JfQotCiAJcmVmY291bnRfaW5jKCZtYXAt PnVzZXJzKTsKIAogCXZtYS0+dm1fb3BzID0gJmdudGRldl92bW9wczsKQEAgLTExMTEsMTAgKzEw MDgsNiBAQCBzdGF0aWMgaW50IGdudGRldl9tbWFwKHN0cnVjdCBmaWxlICpmbGlwLCBzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIAkJdm1hLT52bV9mbGFncyB8PSBWTV9ET05UQ09QWTsKIAog CXZtYS0+dm1fcHJpdmF0ZV9kYXRhID0gbWFwOwotCi0JaWYgKHVzZV9wdGVtb2QpCi0JCW1hcC0+ dm1hID0gdm1hOwotCiAJaWYgKG1hcC0+ZmxhZ3MpIHsKIAkJaWYgKCh2bWEtPnZtX2ZsYWdzICYg Vk1fV1JJVEUpICYmCiAJCQkJKG1hcC0+ZmxhZ3MgJiBHTlRNQVBfcmVhZG9ubHkpKQpAQCAtMTEy NSw4ICsxMDE4LDI4IEBAIHN0YXRpYyBpbnQgZ250ZGV2X21tYXAoc3RydWN0IGZpbGUgKmZsaXAs IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQogCQkJbWFwLT5mbGFncyB8PSBHTlRNQVBfcmVh ZG9ubHk7CiAJfQogCisJaWYgKHVzZV9wdGVtb2QpIHsKKwkJbWFwLT52bWEgPSB2bWE7CisJCWVy ciA9IG1tdV9yYW5nZV9ub3RpZmllcl9pbnNlcnRfbG9ja2VkKAorCQkJJm1hcC0+bm90aWZpZXIs IHZtYS0+dm1fc3RhcnQsCisJCQl2bWEtPnZtX2VuZCAtIHZtYS0+dm1fc3RhcnQsIHZtYS0+dm1f bW0pOworCQlpZiAoZXJyKQorCQkJZ290byBvdXRfdW5sb2NrX3B1dDsKKwl9CiAJbXV0ZXhfdW5s b2NrKCZwcml2LT5sb2NrKTsKIAorCS8qCisJICogZ250ZGV2IHRha2VzIHRoZSBhZGRyZXNzIG9m IHRoZSBQVEUgaW4gZmluZF9ncmFudF9wdGVzKCkgYW5kIHBhc3NlcworCSAqIGl0IHRvIHRoZSBo eXBlcnZpc29yIGluIGdudGRldl9tYXBfZ3JhbnRfcGFnZXMoKS4gVGhlIHB1cnBvc2Ugb2YKKwkg KiB0aGUgbm90aWZpZXIgaXMgdG8gcHJldmVudCB0aGUgaHlwZXJ2aXNvciBwb2ludGVyIHRvIHRo ZSBQVEUgZnJvbQorCSAqIGdvaW5nIHN0YWxlLgorCSAqCisJICogU2luY2UgdGhpcyB2bWEncyBt YXBwaW5ncyBjYW4ndCBiZSB0b3VjaGVkIHdpdGhvdXQgdGhlIG1tYXBfc2VtLAorCSAqIGFuZCB3 ZSBhcmUgaG9sZGluZyBpdCBub3csIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoZSBub3RpZmllcl9y YW5nZQorCSAqIGxvY2tpbmcgcGF0dGVybi4KKwkgKi8KKwltbXVfcmFuZ2VfcmVhZF9iZWdpbigm bWFwLT5ub3RpZmllcik7CisKIAlpZiAodXNlX3B0ZW1vZCkgewogCQltYXAtPnBhZ2VzX3ZtX3N0 YXJ0ID0gdm1hLT52bV9zdGFydDsKIAkJZXJyID0gYXBwbHlfdG9fcGFnZV9yYW5nZSh2bWEtPnZt X21tLCB2bWEtPnZtX3N0YXJ0LApAQCAtMTE3NSw4ICsxMDg4LDExIEBAIHN0YXRpYyBpbnQgZ250 ZGV2X21tYXAoc3RydWN0IGZpbGUgKmZsaXAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQog CW11dGV4X3VubG9jaygmcHJpdi0+bG9jayk7CiBvdXRfcHV0X21hcDoKIAlpZiAodXNlX3B0ZW1v ZCkgewotCQltYXAtPnZtYSA9IE5VTEw7CiAJCXVubWFwX2dyYW50X3BhZ2VzKG1hcCwgMCwgbWFw LT5jb3VudCk7CisJCWlmIChtYXAtPnZtYSkgeworCQkJbW11X3JhbmdlX25vdGlmaWVyX3JlbW92 ZSgmbWFwLT5ub3RpZmllcik7CisJCQltYXAtPnZtYSA9IE5VTEw7CisJCX0KIAl9CiAJZ250ZGV2 X3B1dF9tYXAocHJpdiwgbWFwKTsKIAlyZXR1cm4gZXJyOwotLSAKMi4yMy4wCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA== 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 E66A8CA9EC0 for ; Mon, 28 Oct 2019 20:11:17 +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 B3BEE208C0 for ; Mon, 28 Oct 2019 20:11:17 +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="NTlSsfHD" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B3BEE208C0 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 1iPBLo-0001SY-Cq; Mon, 28 Oct 2019 20:10:52 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iPBLm-0001SP-Ne for xen-devel@lists.xenproject.org; Mon, 28 Oct 2019 20:10:50 +0000 X-Inumbo-ID: 05f976b8-f9bf-11e9-a531-bc764e2007e4 Received: from mail-qt1-x844.google.com (unknown [2607:f8b0:4864:20::844]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 05f976b8-f9bf-11e9-a531-bc764e2007e4; Mon, 28 Oct 2019 20:10:44 +0000 (UTC) Received: by mail-qt1-x844.google.com with SMTP id t8so16532309qtc.6 for ; Mon, 28 Oct 2019 13:10:44 -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=oxTlwVkpt6xsZnGNNFXWlMYrq1FFLaGMPydq4/sN/5w=; b=NTlSsfHDOeTIWuMNnlPtSucXVB40h2KRrzDkHW+jL1verP1znZeXxUVr5ZxGRkg8kj nOSmfcIOektBvoWEXSXNLeWyu4bK7iCKjdDfsBhsxqpELeMVbud4AvVz2DgwJMKf3hW+ ftu0ovDWA7ugtM7z1PmtSEjj69N1bWOBzxzB9u5WoceWfOVgcCcy5OEDNJ3s5ZdRsF4y ycs6GleA0mRegnlWaa97Tl0s3MYXNiDC4JYWMfNhzPrKYg7D/FO+3LOmrV5pQwOQa/Q4 PyTFpj6wxBLgO6MJ1y1Ka7WlaxZeQNsi2I86naY8pTh62rgM7qRbB3znow/XgagUSw8Q XHLA== 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=oxTlwVkpt6xsZnGNNFXWlMYrq1FFLaGMPydq4/sN/5w=; b=DBEtI56+L4ysusa0cAN9vS0BlInPMXcoVfNKs1jY/RFaL3XBis1H47PSZgCklgyF92 4aKaLE+5Zzj0uqPriUvjSbmvnlc0gmy2yj5YpwA1l2DgUCsV2ZvrIxkvk/vfTubs9g9f z6DrN8nyfBZXwQmZaRXzfmrT+0V8rrezzktAj0nE/J+DHjkUSOUH6sW7dcucAnxvsuQ0 dhdLkKBVVG030bLv/HH1ZE05ZGtMV4W4VgbpDUB2B/E7oJPu0s3GqiXpWvQ6PwDMeuTP byYFXhf8jrlT5JRynwCJwtetAiloO0kZJLo39RebLijtBAG3MRErzlTQCPTY4uKJ4E/z Z8TQ== X-Gm-Message-State: APjAAAWIjI+MfK91phKD/YgzJYa8DKmtRO0a8D85G5Xt9rarv2QJrshZ /Rf6BVj2rAUcd1HD2iATqtlBlw== X-Google-Smtp-Source: APXvYqwCdM3Q6SHuLXB8g1n/gZbUCOYrtwo97VEtbKno5VWn+17Xn4uDxHSdiC11RemjVHl4/2axPQ== X-Received: by 2002:ac8:5408:: with SMTP id b8mr327630qtq.164.1572293444231; Mon, 28 Oct 2019 13:10:44 -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 a23sm4534647qtp.85.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-0001gq-Ec; 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:26 -0300 Message-Id: <20191028201032.6352-10-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 09/15] xen/gntdev: 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" RnJvbTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgoKZ250ZGV2IHNpbXBseSB3 YW50cyB0byBtb25pdG9yIGEgc3BlY2lmaWMgVk1BIGZvciBhbnkgbm90aWZpZXIgZXZlbnRzLAp0 aGlzIGNhbiBiZSBkb25lIHN0cmFpZ2h0Zm9yd2FyZGx5IHVzaW5nIG1tdV9yYW5nZV9ub3RpZmll cl9pbnNlcnQoKSBvdmVyCnRoZSBWTUEncyBWQSByYW5nZS4KClRoZSBub3RpZmllciBzaG91bGQg YmUgYXR0YWNoZWQgdW50aWwgdGhlIG9yaWdpbmFsIFZNQSBpcyBkZXN0cm95ZWQuCgpJdCBpcyB1 bmNsZWFyIGlmIGFueSBvZiB0aGlzIGlzIGV2ZW4gc2FuZSwgYnV0IGF0IGxlYXN0IGEgbG90IG9m IGR1cGxpY2F0ZQpjb2RlIGlzIHJlbW92ZWQuCgpDYzogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28g PG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgpDYzogQm9yaXMgT3N0cm92c2t5IDxi b3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KQ2M6IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0 Lm9yZwpDYzogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgpDYzogU3RlZmFubyBTdGFi ZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpTaWduZWQtb2ZmLWJ5OiBKYXNvbiBHdW50 aG9ycGUgPGpnZ0BtZWxsYW5veC5jb20+Ci0tLQogZHJpdmVycy94ZW4vZ250ZGV2LWNvbW1vbi5o IHwgICA4ICstCiBkcml2ZXJzL3hlbi9nbnRkZXYuYyAgICAgICAgfCAxODAgKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMo KyksIDEzOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9nbnRkZXYtY29t bW9uLmggYi9kcml2ZXJzL3hlbi9nbnRkZXYtY29tbW9uLmgKaW5kZXggMmY4Yjk0OWMzZWViMTQu LmIyMDFmZGQyMGI2NjdiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9nbnRkZXYtY29tbW9uLmgK KysrIGIvZHJpdmVycy94ZW4vZ250ZGV2LWNvbW1vbi5oCkBAIC0yMSwxNSArMjEsOCBAQCBzdHJ1 Y3QgZ250ZGV2X2RtYWJ1Zl9wcml2Owogc3RydWN0IGdudGRldl9wcml2IHsKIAkvKiBNYXBzIHdp dGggdmlzaWJsZSBvZmZzZXRzIGluIHRoZSBmaWxlIGRlc2NyaXB0b3IuICovCiAJc3RydWN0IGxp c3RfaGVhZCBtYXBzOwotCS8qCi0JICogTWFwcyB0aGF0IGFyZSBub3QgdmlzaWJsZTsgd2lsbCBi ZSBmcmVlZCBvbiBtdW5tYXAuCi0JICogT25seSBwb3B1bGF0ZWQgaWYgcG9wdWxhdGVfZnJlZWFi bGVfbWFwcyA9PSAxCi0JICovCi0Jc3RydWN0IGxpc3RfaGVhZCBmcmVlYWJsZV9tYXBzOwogCS8q IGxvY2sgcHJvdGVjdHMgbWFwcyBhbmQgZnJlZWFibGVfbWFwcy4gKi8KIAlzdHJ1Y3QgbXV0ZXgg bG9jazsKLQlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKLQlzdHJ1Y3QgbW11X25vdGlmaWVyIG1uOwog CiAjaWZkZWYgQ09ORklHX1hFTl9HUkFOVF9ETUFfQUxMT0MKIAkvKiBEZXZpY2UgZm9yIHdoaWNo IERNQSBtZW1vcnkgaXMgYWxsb2NhdGVkLiAqLwpAQCAtNDksNiArNDIsNyBAQCBzdHJ1Y3QgZ250 ZGV2X3VubWFwX25vdGlmeSB7CiB9OwogCiBzdHJ1Y3QgZ250ZGV2X2dyYW50X21hcCB7CisJc3Ry dWN0IG1tdV9yYW5nZV9ub3RpZmllciBub3RpZmllcjsKIAlzdHJ1Y3QgbGlzdF9oZWFkIG5leHQ7 CiAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7CiAJaW50IGluZGV4OwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy94ZW4vZ250ZGV2LmMgYi9kcml2ZXJzL3hlbi9nbnRkZXYuYwppbmRleCBhNDQ2YTcy MjFlMTNlOS4uMTJkNjI2NjcwYmViYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2dudGRldi5j CisrKyBiL2RyaXZlcnMveGVuL2dudGRldi5jCkBAIC02NSw3ICs2NSw2IEBAIE1PRFVMRV9QQVJN X0RFU0MobGltaXQsICJNYXhpbXVtIG51bWJlciBvZiBncmFudHMgdGhhdCBtYXkgYmUgbWFwcGVk IGJ5ICIKIHN0YXRpYyBhdG9taWNfdCBwYWdlc19tYXBwZWQgPSBBVE9NSUNfSU5JVCgwKTsKIAog c3RhdGljIGludCB1c2VfcHRlbW9kOwotI2RlZmluZSBwb3B1bGF0ZV9mcmVlYWJsZV9tYXBzIHVz ZV9wdGVtb2QKIAogc3RhdGljIGludCB1bm1hcF9ncmFudF9wYWdlcyhzdHJ1Y3QgZ250ZGV2X2dy YW50X21hcCAqbWFwLAogCQkJICAgICBpbnQgb2Zmc2V0LCBpbnQgcGFnZXMpOwpAQCAtMjUxLDEy ICsyNTAsNiBAQCB2b2lkIGdudGRldl9wdXRfbWFwKHN0cnVjdCBnbnRkZXZfcHJpdiAqcHJpdiwg c3RydWN0IGdudGRldl9ncmFudF9tYXAgKm1hcCkKIAkJZXZ0Y2huX3B1dChtYXAtPm5vdGlmeS5l dmVudCk7CiAJfQogCi0JaWYgKHBvcHVsYXRlX2ZyZWVhYmxlX21hcHMgJiYgcHJpdikgewotCQlt dXRleF9sb2NrKCZwcml2LT5sb2NrKTsKLQkJbGlzdF9kZWwoJm1hcC0+bmV4dCk7Ci0JCW11dGV4 X3VubG9jaygmcHJpdi0+bG9jayk7Ci0JfQotCiAJaWYgKG1hcC0+cGFnZXMgJiYgIXVzZV9wdGVt b2QpCiAJCXVubWFwX2dyYW50X3BhZ2VzKG1hcCwgMCwgbWFwLT5jb3VudCk7CiAJZ250ZGV2X2Zy ZWVfbWFwKG1hcCk7CkBAIC00NDUsMTcgKzQzOCw5IEBAIHN0YXRpYyB2b2lkIGdudGRldl92bWFf Y2xvc2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCiAJc3RydWN0IGdudGRldl9wcml2ICpw cml2ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwogCiAJcHJfZGVidWcoImdudGRldl92bWFfY2xvc2Ug JXBcbiIsIHZtYSk7Ci0JaWYgKHVzZV9wdGVtb2QpIHsKLQkJLyogSXQgaXMgcG9zc2libGUgdGhh dCBhbiBtbXUgbm90aWZpZXIgY291bGQgYmUgcnVubmluZwotCQkgKiBjb25jdXJyZW50bHksIHNv IHRha2UgcHJpdi0+bG9jayB0byBlbnN1cmUgdGhhdCB0aGUgdm1hIHdvbid0Ci0JCSAqIHZhbmlz aGluZyBkdXJpbmcgdGhlIHVubWFwX2dyYW50X3BhZ2VzIGNhbGwsIHNpbmNlIHdlIHdpbGwKLQkJ ICogc3BpbiBoZXJlIHVudGlsIHRoYXQgY29tcGxldGVzLiBTdWNoIGEgY29uY3VycmVudCBjYWxs IHdpbGwKLQkJICogbm90IGRvIGFueSB1bm1hcHBpbmcsIHNpbmNlIHRoYXQgaGFzIGJlZW4gZG9u ZSBwcmlvciB0bwotCQkgKiBjbG9zaW5nIHRoZSB2bWEsIGJ1dCBpdCBtYXkgc3RpbGwgaXRlcmF0 ZSB0aGUgdW5tYXBfb3BzIGxpc3QuCi0JCSAqLwotCQltdXRleF9sb2NrKCZwcml2LT5sb2NrKTsK KwlpZiAodXNlX3B0ZW1vZCAmJiBtYXAtPnZtYSA9PSB2bWEpIHsKKwkJbW11X3JhbmdlX25vdGlm aWVyX3JlbW92ZSgmbWFwLT5ub3RpZmllcik7CiAJCW1hcC0+dm1hID0gTlVMTDsKLQkJbXV0ZXhf dW5sb2NrKCZwcml2LT5sb2NrKTsKIAl9CiAJdm1hLT52bV9wcml2YXRlX2RhdGEgPSBOVUxMOwog CWdudGRldl9wdXRfbWFwKHByaXYsIG1hcCk7CkBAIC00NzcsMTA5ICs0NjIsNDQgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBnbnRkZXZfdm1vcHMgPSB7CiAKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSAqLwogCi1zdGF0aWMgYm9vbCBpbl9yYW5nZShzdHJ1Y3QgZ250ZGV2X2dyYW50 X21hcCAqbWFwLAotCQkJICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBl bmQpCi17Ci0JaWYgKCFtYXAtPnZtYSkKLQkJcmV0dXJuIGZhbHNlOwotCWlmIChtYXAtPnZtYS0+ dm1fc3RhcnQgPj0gZW5kKQotCQlyZXR1cm4gZmFsc2U7Ci0JaWYgKG1hcC0+dm1hLT52bV9lbmQg PD0gc3RhcnQpCi0JCXJldHVybiBmYWxzZTsKLQotCXJldHVybiB0cnVlOwotfQotCi1zdGF0aWMg aW50IHVubWFwX2lmX2luX3JhbmdlKHN0cnVjdCBnbnRkZXZfZ3JhbnRfbWFwICptYXAsCi0JCQkg ICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwKLQkJCSAgICAgIGJv b2wgYmxvY2thYmxlKQorc3RhdGljIGJvb2wgZ250ZGV2X2ludmFsaWRhdGUoc3RydWN0IG1tdV9y YW5nZV9ub3RpZmllciAqbW4sCisJCQkgICAgICBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3Jh bmdlICpyYW5nZSwKKwkJCSAgICAgIHVuc2lnbmVkIGxvbmcgY3VyX3NlcSkKIHsKKwlzdHJ1Y3Qg Z250ZGV2X2dyYW50X21hcCAqbWFwID0KKwkJY29udGFpbmVyX29mKG1uLCBzdHJ1Y3QgZ250ZGV2 X2dyYW50X21hcCwgbm90aWZpZXIpOwogCXVuc2lnbmVkIGxvbmcgbXN0YXJ0LCBtZW5kOwogCWlu dCBlcnI7CiAKLQlpZiAoIWluX3JhbmdlKG1hcCwgc3RhcnQsIGVuZCkpCi0JCXJldHVybiAwOwor CWlmICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpCisJCXJldHVybiBmYWxz ZTsKIAotCWlmICghYmxvY2thYmxlKQotCQlyZXR1cm4gLUVBR0FJTjsKKwkvKgorCSAqIElmIHRo ZSBWTUEgaXMgc3BsaXQgb3Igb3RoZXJ3aXNlIGNoYW5nZWQgdGhlIG5vdGlmaWVyIGlzIG5vdAor CSAqIHVwZGF0ZWQsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIHByb2Nlc3MgVkEncyBvdXRzaWRlIHRo ZSBtb2RpZmllZAorCSAqIFZNQS4gRklYTUU6IEl0IHdvdWxkIGJlIG11Y2ggbW9yZSB1bmRlcnN0 YW5kYWJsZSB0byBqdXN0IHByZXZlbnQKKwkgKiBtb2RpZnlpbmcgdGhlIFZNQSBpbiB0aGUgZmly c3QgcGxhY2UuCisJICovCisJaWYgKG1hcC0+dm1hLT52bV9zdGFydCA+PSByYW5nZS0+ZW5kIHx8 CisJICAgIG1hcC0+dm1hLT52bV9lbmQgPD0gcmFuZ2UtPnN0YXJ0KQorCQlyZXR1cm4gdHJ1ZTsK IAotCW1zdGFydCA9IG1heChzdGFydCwgbWFwLT52bWEtPnZtX3N0YXJ0KTsKLQltZW5kICAgPSBt aW4oZW5kLCAgIG1hcC0+dm1hLT52bV9lbmQpOworCW1zdGFydCA9IG1heChyYW5nZS0+c3RhcnQs IG1hcC0+dm1hLT52bV9zdGFydCk7CisJbWVuZCA9IG1pbihyYW5nZS0+ZW5kLCBtYXAtPnZtYS0+ dm1fZW5kKTsKIAlwcl9kZWJ1ZygibWFwICVkKyVkICglbHggJWx4KSwgcmFuZ2UgJWx4ICVseCwg bXJhbmdlICVseCAlbHhcbiIsCiAJCQltYXAtPmluZGV4LCBtYXAtPmNvdW50LAogCQkJbWFwLT52 bWEtPnZtX3N0YXJ0LCBtYXAtPnZtYS0+dm1fZW5kLAotCQkJc3RhcnQsIGVuZCwgbXN0YXJ0LCBt ZW5kKTsKKwkJCXJhbmdlLT5zdGFydCwgcmFuZ2UtPmVuZCwgbXN0YXJ0LCBtZW5kKTsKIAllcnIg PSB1bm1hcF9ncmFudF9wYWdlcyhtYXAsCiAJCQkJKG1zdGFydCAtIG1hcC0+dm1hLT52bV9zdGFy dCkgPj4gUEFHRV9TSElGVCwKIAkJCQkobWVuZCAtIG1zdGFydCkgPj4gUEFHRV9TSElGVCk7CiAJ V0FSTl9PTihlcnIpOwogCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgbW5faW52bF9yYW5n ZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKLQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qg bW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSkKLXsKLQlzdHJ1Y3QgZ250ZGV2X3ByaXYgKnByaXYg PSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBnbnRkZXZfcHJpdiwgbW4pOwotCXN0cnVjdCBnbnRk ZXZfZ3JhbnRfbWFwICptYXA7Ci0JaW50IHJldCA9IDA7Ci0KLQlpZiAobW11X25vdGlmaWVyX3Jh bmdlX2Jsb2NrYWJsZShyYW5nZSkpCi0JCW11dGV4X2xvY2soJnByaXYtPmxvY2spOwotCWVsc2Ug aWYgKCFtdXRleF90cnlsb2NrKCZwcml2LT5sb2NrKSkKLQkJcmV0dXJuIC1FQUdBSU47Ci0KLQls aXN0X2Zvcl9lYWNoX2VudHJ5KG1hcCwgJnByaXYtPm1hcHMsIG5leHQpIHsKLQkJcmV0ID0gdW5t YXBfaWZfaW5fcmFuZ2UobWFwLCByYW5nZS0+c3RhcnQsIHJhbmdlLT5lbmQsCi0JCQkJCW1tdV9u b3RpZmllcl9yYW5nZV9ibG9ja2FibGUocmFuZ2UpKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gb3V0 X3VubG9jazsKLQl9Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShtYXAsICZwcml2LT5mcmVlYWJsZV9t YXBzLCBuZXh0KSB7Ci0JCXJldCA9IHVubWFwX2lmX2luX3JhbmdlKG1hcCwgcmFuZ2UtPnN0YXJ0 LCByYW5nZS0+ZW5kLAotCQkJCQltbXVfbm90aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHJhbmdlKSk7 Ci0JCWlmIChyZXQpCi0JCQlnb3RvIG91dF91bmxvY2s7Ci0JfQotCi1vdXRfdW5sb2NrOgotCW11 dGV4X3VubG9jaygmcHJpdi0+bG9jayk7Ci0KLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgdm9p ZCBtbl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAotCQkgICAgICAgc3RydWN0IG1t X3N0cnVjdCAqbW0pCi17Ci0Jc3RydWN0IGdudGRldl9wcml2ICpwcml2ID0gY29udGFpbmVyX29m KG1uLCBzdHJ1Y3QgZ250ZGV2X3ByaXYsIG1uKTsKLQlzdHJ1Y3QgZ250ZGV2X2dyYW50X21hcCAq bWFwOwotCWludCBlcnI7Ci0KLQltdXRleF9sb2NrKCZwcml2LT5sb2NrKTsKLQlsaXN0X2Zvcl9l YWNoX2VudHJ5KG1hcCwgJnByaXYtPm1hcHMsIG5leHQpIHsKLQkJaWYgKCFtYXAtPnZtYSkKLQkJ CWNvbnRpbnVlOwotCQlwcl9kZWJ1ZygibWFwICVkKyVkICglbHggJWx4KVxuIiwKLQkJCQltYXAt PmluZGV4LCBtYXAtPmNvdW50LAotCQkJCW1hcC0+dm1hLT52bV9zdGFydCwgbWFwLT52bWEtPnZt X2VuZCk7Ci0JCWVyciA9IHVubWFwX2dyYW50X3BhZ2VzKG1hcCwgLyogb2Zmc2V0ICovIDAsIG1h cC0+Y291bnQpOwotCQlXQVJOX09OKGVycik7Ci0JfQotCWxpc3RfZm9yX2VhY2hfZW50cnkobWFw LCAmcHJpdi0+ZnJlZWFibGVfbWFwcywgbmV4dCkgewotCQlpZiAoIW1hcC0+dm1hKQotCQkJY29u dGludWU7Ci0JCXByX2RlYnVnKCJtYXAgJWQrJWQgKCVseCAlbHgpXG4iLAotCQkJCW1hcC0+aW5k ZXgsIG1hcC0+Y291bnQsCi0JCQkJbWFwLT52bWEtPnZtX3N0YXJ0LCBtYXAtPnZtYS0+dm1fZW5k KTsKLQkJZXJyID0gdW5tYXBfZ3JhbnRfcGFnZXMobWFwLCAvKiBvZmZzZXQgKi8gMCwgbWFwLT5j b3VudCk7Ci0JCVdBUk5fT04oZXJyKTsKLQl9Ci0JbXV0ZXhfdW5sb2NrKCZwcml2LT5sb2NrKTsK KwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3Bz IGdudGRldl9tbXVfb3BzID0gewotCS5yZWxlYXNlICAgICAgICAgICAgICAgID0gbW5fcmVsZWFz ZSwKLQkuaW52YWxpZGF0ZV9yYW5nZV9zdGFydCA9IG1uX2ludmxfcmFuZ2Vfc3RhcnQsCitzdGF0 aWMgY29uc3Qgc3RydWN0IG1tdV9yYW5nZV9ub3RpZmllcl9vcHMgZ250ZGV2X21tdV9vcHMgPSB7 CisJLmludmFsaWRhdGUgPSBnbnRkZXZfaW52YWxpZGF0ZSwKIH07CiAKIC8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAq LwpAQCAtNTk0LDcgKzUxNCw2IEBAIHN0YXRpYyBpbnQgZ250ZGV2X29wZW4oc3RydWN0IGlub2Rl ICppbm9kZSwgc3RydWN0IGZpbGUgKmZsaXApCiAJCXJldHVybiAtRU5PTUVNOwogCiAJSU5JVF9M SVNUX0hFQUQoJnByaXYtPm1hcHMpOwotCUlOSVRfTElTVF9IRUFEKCZwcml2LT5mcmVlYWJsZV9t YXBzKTsKIAltdXRleF9pbml0KCZwcml2LT5sb2NrKTsKIAogI2lmZGVmIENPTkZJR19YRU5fR05U REVWX0RNQUJVRgpAQCAtNjA2LDE3ICs1MjUsNiBAQCBzdGF0aWMgaW50IGdudGRldl9vcGVuKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmbGlwKQogCX0KICNlbmRpZgogCi0JaWYg KHVzZV9wdGVtb2QpIHsKLQkJcHJpdi0+bW0gPSBnZXRfdGFza19tbShjdXJyZW50KTsKLQkJaWYg KCFwcml2LT5tbSkgewotCQkJa2ZyZWUocHJpdik7Ci0JCQlyZXR1cm4gLUVOT01FTTsKLQkJfQot CQlwcml2LT5tbi5vcHMgPSAmZ250ZGV2X21tdV9vcHM7Ci0JCXJldCA9IG1tdV9ub3RpZmllcl9y ZWdpc3RlcigmcHJpdi0+bW4sIHByaXYtPm1tKTsKLQkJbW1wdXQocHJpdi0+bW0pOwotCX0KLQog CWlmIChyZXQpIHsKIAkJa2ZyZWUocHJpdik7CiAJCXJldHVybiByZXQ7CkBAIC02NTMsMTYgKzU2 MSwxMiBAQCBzdGF0aWMgaW50IGdudGRldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0 cnVjdCBmaWxlICpmbGlwKQogCQlsaXN0X2RlbCgmbWFwLT5uZXh0KTsKIAkJZ250ZGV2X3B1dF9t YXAoTlVMTCAvKiBhbHJlYWR5IHJlbW92ZWQgKi8sIG1hcCk7CiAJfQotCVdBUk5fT04oIWxpc3Rf ZW1wdHkoJnByaXYtPmZyZWVhYmxlX21hcHMpKTsKIAltdXRleF91bmxvY2soJnByaXYtPmxvY2sp OwogCiAjaWZkZWYgQ09ORklHX1hFTl9HTlRERVZfRE1BQlVGCiAJZ250ZGV2X2RtYWJ1Zl9maW5p KHByaXYtPmRtYWJ1Zl9wcml2KTsKICNlbmRpZgogCi0JaWYgKHVzZV9wdGVtb2QpCi0JCW1tdV9u b3RpZmllcl91bnJlZ2lzdGVyKCZwcml2LT5tbiwgcHJpdi0+bW0pOwotCiAJa2ZyZWUocHJpdik7 CiAJcmV0dXJuIDA7CiB9CkBAIC03MjMsOCArNjI3LDYgQEAgc3RhdGljIGxvbmcgZ250ZGV2X2lv Y3RsX3VubWFwX2dyYW50X3JlZihzdHJ1Y3QgZ250ZGV2X3ByaXYgKnByaXYsCiAJbWFwID0gZ250 ZGV2X2ZpbmRfbWFwX2luZGV4KHByaXYsIG9wLmluZGV4ID4+IFBBR0VfU0hJRlQsIG9wLmNvdW50 KTsKIAlpZiAobWFwKSB7CiAJCWxpc3RfZGVsKCZtYXAtPm5leHQpOwotCQlpZiAocG9wdWxhdGVf ZnJlZWFibGVfbWFwcykKLQkJCWxpc3RfYWRkX3RhaWwoJm1hcC0+bmV4dCwgJnByaXYtPmZyZWVh YmxlX21hcHMpOwogCQllcnIgPSAwOwogCX0KIAltdXRleF91bmxvY2soJnByaXYtPmxvY2spOwpA QCAtMTA5NiwxMSArOTk4LDYgQEAgc3RhdGljIGludCBnbnRkZXZfbW1hcChzdHJ1Y3QgZmlsZSAq ZmxpcCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCiAJCWdvdG8gdW5sb2NrX291dDsKIAlp ZiAodXNlX3B0ZW1vZCAmJiBtYXAtPnZtYSkKIAkJZ290byB1bmxvY2tfb3V0OwotCWlmICh1c2Vf cHRlbW9kICYmIHByaXYtPm1tICE9IHZtYS0+dm1fbW0pIHsKLQkJcHJfd2FybigiSHVoPyBPdGhl ciBtbT9cbiIpOwotCQlnb3RvIHVubG9ja19vdXQ7Ci0JfQotCiAJcmVmY291bnRfaW5jKCZtYXAt PnVzZXJzKTsKIAogCXZtYS0+dm1fb3BzID0gJmdudGRldl92bW9wczsKQEAgLTExMTEsMTAgKzEw MDgsNiBAQCBzdGF0aWMgaW50IGdudGRldl9tbWFwKHN0cnVjdCBmaWxlICpmbGlwLCBzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIAkJdm1hLT52bV9mbGFncyB8PSBWTV9ET05UQ09QWTsKIAog CXZtYS0+dm1fcHJpdmF0ZV9kYXRhID0gbWFwOwotCi0JaWYgKHVzZV9wdGVtb2QpCi0JCW1hcC0+ dm1hID0gdm1hOwotCiAJaWYgKG1hcC0+ZmxhZ3MpIHsKIAkJaWYgKCh2bWEtPnZtX2ZsYWdzICYg Vk1fV1JJVEUpICYmCiAJCQkJKG1hcC0+ZmxhZ3MgJiBHTlRNQVBfcmVhZG9ubHkpKQpAQCAtMTEy NSw4ICsxMDE4LDI4IEBAIHN0YXRpYyBpbnQgZ250ZGV2X21tYXAoc3RydWN0IGZpbGUgKmZsaXAs IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQogCQkJbWFwLT5mbGFncyB8PSBHTlRNQVBfcmVh ZG9ubHk7CiAJfQogCisJaWYgKHVzZV9wdGVtb2QpIHsKKwkJbWFwLT52bWEgPSB2bWE7CisJCWVy ciA9IG1tdV9yYW5nZV9ub3RpZmllcl9pbnNlcnRfbG9ja2VkKAorCQkJJm1hcC0+bm90aWZpZXIs IHZtYS0+dm1fc3RhcnQsCisJCQl2bWEtPnZtX2VuZCAtIHZtYS0+dm1fc3RhcnQsIHZtYS0+dm1f bW0pOworCQlpZiAoZXJyKQorCQkJZ290byBvdXRfdW5sb2NrX3B1dDsKKwl9CiAJbXV0ZXhfdW5s b2NrKCZwcml2LT5sb2NrKTsKIAorCS8qCisJICogZ250ZGV2IHRha2VzIHRoZSBhZGRyZXNzIG9m IHRoZSBQVEUgaW4gZmluZF9ncmFudF9wdGVzKCkgYW5kIHBhc3NlcworCSAqIGl0IHRvIHRoZSBo eXBlcnZpc29yIGluIGdudGRldl9tYXBfZ3JhbnRfcGFnZXMoKS4gVGhlIHB1cnBvc2Ugb2YKKwkg KiB0aGUgbm90aWZpZXIgaXMgdG8gcHJldmVudCB0aGUgaHlwZXJ2aXNvciBwb2ludGVyIHRvIHRo ZSBQVEUgZnJvbQorCSAqIGdvaW5nIHN0YWxlLgorCSAqCisJICogU2luY2UgdGhpcyB2bWEncyBt YXBwaW5ncyBjYW4ndCBiZSB0b3VjaGVkIHdpdGhvdXQgdGhlIG1tYXBfc2VtLAorCSAqIGFuZCB3 ZSBhcmUgaG9sZGluZyBpdCBub3csIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoZSBub3RpZmllcl9y YW5nZQorCSAqIGxvY2tpbmcgcGF0dGVybi4KKwkgKi8KKwltbXVfcmFuZ2VfcmVhZF9iZWdpbigm bWFwLT5ub3RpZmllcik7CisKIAlpZiAodXNlX3B0ZW1vZCkgewogCQltYXAtPnBhZ2VzX3ZtX3N0 YXJ0ID0gdm1hLT52bV9zdGFydDsKIAkJZXJyID0gYXBwbHlfdG9fcGFnZV9yYW5nZSh2bWEtPnZt X21tLCB2bWEtPnZtX3N0YXJ0LApAQCAtMTE3NSw4ICsxMDg4LDExIEBAIHN0YXRpYyBpbnQgZ250 ZGV2X21tYXAoc3RydWN0IGZpbGUgKmZsaXAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQog CW11dGV4X3VubG9jaygmcHJpdi0+bG9jayk7CiBvdXRfcHV0X21hcDoKIAlpZiAodXNlX3B0ZW1v ZCkgewotCQltYXAtPnZtYSA9IE5VTEw7CiAJCXVubWFwX2dyYW50X3BhZ2VzKG1hcCwgMCwgbWFw LT5jb3VudCk7CisJCWlmIChtYXAtPnZtYSkgeworCQkJbW11X3JhbmdlX25vdGlmaWVyX3JlbW92 ZSgmbWFwLT5ub3RpZmllcik7CisJCQltYXAtPnZtYSA9IE5VTEw7CisJCX0KIAl9CiAJZ250ZGV2 X3B1dF9tYXAocHJpdiwgbWFwKTsKIAlyZXR1cm4gZXJyOwotLSAKMi4yMy4wCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA== 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 174B6CA9EC0 for ; Mon, 28 Oct 2019 20:17:18 +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 EE16021721 for ; Mon, 28 Oct 2019 20:17:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EE16021721 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 54CDE6E9FB; Mon, 28 Oct 2019 20:17:17 +0000 (UTC) Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4539E89D5F for ; Mon, 28 Oct 2019 20:10:45 +0000 (UTC) Received: by mail-qt1-x844.google.com with SMTP id g50so16546422qtb.4 for ; Mon, 28 Oct 2019 13:10:45 -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=oxTlwVkpt6xsZnGNNFXWlMYrq1FFLaGMPydq4/sN/5w=; b=EIjJv3RuEfDokVoCHUs0ikmt8/YK5d392cqar7m86VKPhZq4y4WeNtb7JmsZuSs5BH jFOmCr/V8qL2sDyNOizALQxQhebK0k2FLVU/CfEyhglDTFWh7kRXU2S5kESbXaENsUtW +v+tnLtI2HZylHtCQyoT+SLGlK7pdNwsY9GAuDbcOq2sXo/7UykwxSLHmkskJq9TmDxS gNHC1OpjVXcUq7hqSVNcoa1EtG4YzdNG05Bg5CRTL6pf+RGelPhLT6wRYwzd8mNHk8sB X4IFcqTbplMxoI0bb2l8ESr8UbX+GKBisZx+ygbKZk25GxjjteWFSkWiCwwi1bzqDVTI +YGQ== X-Gm-Message-State: APjAAAU+GrWVjYTXDZZirBHb/cc9eb+EaON2d55EqH1EvoW/Hqo9tn5J M9yoMsw23LA4HCv3bxZcNoRQog== X-Google-Smtp-Source: APXvYqwCdM3Q6SHuLXB8g1n/gZbUCOYrtwo97VEtbKno5VWn+17Xn4uDxHSdiC11RemjVHl4/2axPQ== X-Received: by 2002:ac8:5408:: with SMTP id b8mr327630qtq.164.1572293444231; Mon, 28 Oct 2019 13:10:44 -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 a23sm4534647qtp.85.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-0001gq-Ec; 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 09/15] xen/gntdev: use mmu_range_notifier_insert Date: Mon, 28 Oct 2019 17:10:26 -0300 Message-Id: <20191028201032.6352-10-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=oxTlwVkpt6xsZnGNNFXWlMYrq1FFLaGMPydq4/sN/5w=; b=NTlSsfHDOeTIWuMNnlPtSucXVB40h2KRrzDkHW+jL1verP1znZeXxUVr5ZxGRkg8kj nOSmfcIOektBvoWEXSXNLeWyu4bK7iCKjdDfsBhsxqpELeMVbud4AvVz2DgwJMKf3hW+ ftu0ovDWA7ugtM7z1PmtSEjj69N1bWOBzxzB9u5WoceWfOVgcCcy5OEDNJ3s5ZdRsF4y ycs6GleA0mRegnlWaa97Tl0s3MYXNiDC4JYWMfNhzPrKYg7D/FO+3LOmrV5pQwOQa/Q4 PyTFpj6wxBLgO6MJ1y1Ka7WlaxZeQNsi2I86naY8pTh62rgM7qRbB3znow/XgagUSw8Q XHLA== 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: <20191028201026.ekMCh0kPhjDey_CzYa-VmUODhijoPrnNl9w8Ygu7DVs@z> RnJvbTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgoKZ250ZGV2IHNpbXBseSB3 YW50cyB0byBtb25pdG9yIGEgc3BlY2lmaWMgVk1BIGZvciBhbnkgbm90aWZpZXIgZXZlbnRzLAp0 aGlzIGNhbiBiZSBkb25lIHN0cmFpZ2h0Zm9yd2FyZGx5IHVzaW5nIG1tdV9yYW5nZV9ub3RpZmll cl9pbnNlcnQoKSBvdmVyCnRoZSBWTUEncyBWQSByYW5nZS4KClRoZSBub3RpZmllciBzaG91bGQg YmUgYXR0YWNoZWQgdW50aWwgdGhlIG9yaWdpbmFsIFZNQSBpcyBkZXN0cm95ZWQuCgpJdCBpcyB1 bmNsZWFyIGlmIGFueSBvZiB0aGlzIGlzIGV2ZW4gc2FuZSwgYnV0IGF0IGxlYXN0IGEgbG90IG9m IGR1cGxpY2F0ZQpjb2RlIGlzIHJlbW92ZWQuCgpDYzogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28g PG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgpDYzogQm9yaXMgT3N0cm92c2t5IDxi b3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KQ2M6IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0 Lm9yZwpDYzogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgpDYzogU3RlZmFubyBTdGFi ZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpTaWduZWQtb2ZmLWJ5OiBKYXNvbiBHdW50 aG9ycGUgPGpnZ0BtZWxsYW5veC5jb20+Ci0tLQogZHJpdmVycy94ZW4vZ250ZGV2LWNvbW1vbi5o IHwgICA4ICstCiBkcml2ZXJzL3hlbi9nbnRkZXYuYyAgICAgICAgfCAxODAgKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMo KyksIDEzOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9nbnRkZXYtY29t bW9uLmggYi9kcml2ZXJzL3hlbi9nbnRkZXYtY29tbW9uLmgKaW5kZXggMmY4Yjk0OWMzZWViMTQu LmIyMDFmZGQyMGI2NjdiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9nbnRkZXYtY29tbW9uLmgK KysrIGIvZHJpdmVycy94ZW4vZ250ZGV2LWNvbW1vbi5oCkBAIC0yMSwxNSArMjEsOCBAQCBzdHJ1 Y3QgZ250ZGV2X2RtYWJ1Zl9wcml2Owogc3RydWN0IGdudGRldl9wcml2IHsKIAkvKiBNYXBzIHdp dGggdmlzaWJsZSBvZmZzZXRzIGluIHRoZSBmaWxlIGRlc2NyaXB0b3IuICovCiAJc3RydWN0IGxp c3RfaGVhZCBtYXBzOwotCS8qCi0JICogTWFwcyB0aGF0IGFyZSBub3QgdmlzaWJsZTsgd2lsbCBi ZSBmcmVlZCBvbiBtdW5tYXAuCi0JICogT25seSBwb3B1bGF0ZWQgaWYgcG9wdWxhdGVfZnJlZWFi bGVfbWFwcyA9PSAxCi0JICovCi0Jc3RydWN0IGxpc3RfaGVhZCBmcmVlYWJsZV9tYXBzOwogCS8q IGxvY2sgcHJvdGVjdHMgbWFwcyBhbmQgZnJlZWFibGVfbWFwcy4gKi8KIAlzdHJ1Y3QgbXV0ZXgg bG9jazsKLQlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKLQlzdHJ1Y3QgbW11X25vdGlmaWVyIG1uOwog CiAjaWZkZWYgQ09ORklHX1hFTl9HUkFOVF9ETUFfQUxMT0MKIAkvKiBEZXZpY2UgZm9yIHdoaWNo IERNQSBtZW1vcnkgaXMgYWxsb2NhdGVkLiAqLwpAQCAtNDksNiArNDIsNyBAQCBzdHJ1Y3QgZ250 ZGV2X3VubWFwX25vdGlmeSB7CiB9OwogCiBzdHJ1Y3QgZ250ZGV2X2dyYW50X21hcCB7CisJc3Ry dWN0IG1tdV9yYW5nZV9ub3RpZmllciBub3RpZmllcjsKIAlzdHJ1Y3QgbGlzdF9oZWFkIG5leHQ7 CiAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7CiAJaW50IGluZGV4OwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy94ZW4vZ250ZGV2LmMgYi9kcml2ZXJzL3hlbi9nbnRkZXYuYwppbmRleCBhNDQ2YTcy MjFlMTNlOS4uMTJkNjI2NjcwYmViYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2dudGRldi5j CisrKyBiL2RyaXZlcnMveGVuL2dudGRldi5jCkBAIC02NSw3ICs2NSw2IEBAIE1PRFVMRV9QQVJN X0RFU0MobGltaXQsICJNYXhpbXVtIG51bWJlciBvZiBncmFudHMgdGhhdCBtYXkgYmUgbWFwcGVk IGJ5ICIKIHN0YXRpYyBhdG9taWNfdCBwYWdlc19tYXBwZWQgPSBBVE9NSUNfSU5JVCgwKTsKIAog c3RhdGljIGludCB1c2VfcHRlbW9kOwotI2RlZmluZSBwb3B1bGF0ZV9mcmVlYWJsZV9tYXBzIHVz ZV9wdGVtb2QKIAogc3RhdGljIGludCB1bm1hcF9ncmFudF9wYWdlcyhzdHJ1Y3QgZ250ZGV2X2dy YW50X21hcCAqbWFwLAogCQkJICAgICBpbnQgb2Zmc2V0LCBpbnQgcGFnZXMpOwpAQCAtMjUxLDEy ICsyNTAsNiBAQCB2b2lkIGdudGRldl9wdXRfbWFwKHN0cnVjdCBnbnRkZXZfcHJpdiAqcHJpdiwg c3RydWN0IGdudGRldl9ncmFudF9tYXAgKm1hcCkKIAkJZXZ0Y2huX3B1dChtYXAtPm5vdGlmeS5l dmVudCk7CiAJfQogCi0JaWYgKHBvcHVsYXRlX2ZyZWVhYmxlX21hcHMgJiYgcHJpdikgewotCQlt dXRleF9sb2NrKCZwcml2LT5sb2NrKTsKLQkJbGlzdF9kZWwoJm1hcC0+bmV4dCk7Ci0JCW11dGV4 X3VubG9jaygmcHJpdi0+bG9jayk7Ci0JfQotCiAJaWYgKG1hcC0+cGFnZXMgJiYgIXVzZV9wdGVt b2QpCiAJCXVubWFwX2dyYW50X3BhZ2VzKG1hcCwgMCwgbWFwLT5jb3VudCk7CiAJZ250ZGV2X2Zy ZWVfbWFwKG1hcCk7CkBAIC00NDUsMTcgKzQzOCw5IEBAIHN0YXRpYyB2b2lkIGdudGRldl92bWFf Y2xvc2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCiAJc3RydWN0IGdudGRldl9wcml2ICpw cml2ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwogCiAJcHJfZGVidWcoImdudGRldl92bWFfY2xvc2Ug JXBcbiIsIHZtYSk7Ci0JaWYgKHVzZV9wdGVtb2QpIHsKLQkJLyogSXQgaXMgcG9zc2libGUgdGhh dCBhbiBtbXUgbm90aWZpZXIgY291bGQgYmUgcnVubmluZwotCQkgKiBjb25jdXJyZW50bHksIHNv IHRha2UgcHJpdi0+bG9jayB0byBlbnN1cmUgdGhhdCB0aGUgdm1hIHdvbid0Ci0JCSAqIHZhbmlz aGluZyBkdXJpbmcgdGhlIHVubWFwX2dyYW50X3BhZ2VzIGNhbGwsIHNpbmNlIHdlIHdpbGwKLQkJ ICogc3BpbiBoZXJlIHVudGlsIHRoYXQgY29tcGxldGVzLiBTdWNoIGEgY29uY3VycmVudCBjYWxs IHdpbGwKLQkJICogbm90IGRvIGFueSB1bm1hcHBpbmcsIHNpbmNlIHRoYXQgaGFzIGJlZW4gZG9u ZSBwcmlvciB0bwotCQkgKiBjbG9zaW5nIHRoZSB2bWEsIGJ1dCBpdCBtYXkgc3RpbGwgaXRlcmF0 ZSB0aGUgdW5tYXBfb3BzIGxpc3QuCi0JCSAqLwotCQltdXRleF9sb2NrKCZwcml2LT5sb2NrKTsK KwlpZiAodXNlX3B0ZW1vZCAmJiBtYXAtPnZtYSA9PSB2bWEpIHsKKwkJbW11X3JhbmdlX25vdGlm aWVyX3JlbW92ZSgmbWFwLT5ub3RpZmllcik7CiAJCW1hcC0+dm1hID0gTlVMTDsKLQkJbXV0ZXhf dW5sb2NrKCZwcml2LT5sb2NrKTsKIAl9CiAJdm1hLT52bV9wcml2YXRlX2RhdGEgPSBOVUxMOwog CWdudGRldl9wdXRfbWFwKHByaXYsIG1hcCk7CkBAIC00NzcsMTA5ICs0NjIsNDQgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBnbnRkZXZfdm1vcHMgPSB7CiAKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSAqLwogCi1zdGF0aWMgYm9vbCBpbl9yYW5nZShzdHJ1Y3QgZ250ZGV2X2dyYW50 X21hcCAqbWFwLAotCQkJICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBl bmQpCi17Ci0JaWYgKCFtYXAtPnZtYSkKLQkJcmV0dXJuIGZhbHNlOwotCWlmIChtYXAtPnZtYS0+ dm1fc3RhcnQgPj0gZW5kKQotCQlyZXR1cm4gZmFsc2U7Ci0JaWYgKG1hcC0+dm1hLT52bV9lbmQg PD0gc3RhcnQpCi0JCXJldHVybiBmYWxzZTsKLQotCXJldHVybiB0cnVlOwotfQotCi1zdGF0aWMg aW50IHVubWFwX2lmX2luX3JhbmdlKHN0cnVjdCBnbnRkZXZfZ3JhbnRfbWFwICptYXAsCi0JCQkg ICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwKLQkJCSAgICAgIGJv b2wgYmxvY2thYmxlKQorc3RhdGljIGJvb2wgZ250ZGV2X2ludmFsaWRhdGUoc3RydWN0IG1tdV9y YW5nZV9ub3RpZmllciAqbW4sCisJCQkgICAgICBjb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3Jh bmdlICpyYW5nZSwKKwkJCSAgICAgIHVuc2lnbmVkIGxvbmcgY3VyX3NlcSkKIHsKKwlzdHJ1Y3Qg Z250ZGV2X2dyYW50X21hcCAqbWFwID0KKwkJY29udGFpbmVyX29mKG1uLCBzdHJ1Y3QgZ250ZGV2 X2dyYW50X21hcCwgbm90aWZpZXIpOwogCXVuc2lnbmVkIGxvbmcgbXN0YXJ0LCBtZW5kOwogCWlu dCBlcnI7CiAKLQlpZiAoIWluX3JhbmdlKG1hcCwgc3RhcnQsIGVuZCkpCi0JCXJldHVybiAwOwor CWlmICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpCisJCXJldHVybiBmYWxz ZTsKIAotCWlmICghYmxvY2thYmxlKQotCQlyZXR1cm4gLUVBR0FJTjsKKwkvKgorCSAqIElmIHRo ZSBWTUEgaXMgc3BsaXQgb3Igb3RoZXJ3aXNlIGNoYW5nZWQgdGhlIG5vdGlmaWVyIGlzIG5vdAor CSAqIHVwZGF0ZWQsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIHByb2Nlc3MgVkEncyBvdXRzaWRlIHRo ZSBtb2RpZmllZAorCSAqIFZNQS4gRklYTUU6IEl0IHdvdWxkIGJlIG11Y2ggbW9yZSB1bmRlcnN0 YW5kYWJsZSB0byBqdXN0IHByZXZlbnQKKwkgKiBtb2RpZnlpbmcgdGhlIFZNQSBpbiB0aGUgZmly c3QgcGxhY2UuCisJICovCisJaWYgKG1hcC0+dm1hLT52bV9zdGFydCA+PSByYW5nZS0+ZW5kIHx8 CisJICAgIG1hcC0+dm1hLT52bV9lbmQgPD0gcmFuZ2UtPnN0YXJ0KQorCQlyZXR1cm4gdHJ1ZTsK IAotCW1zdGFydCA9IG1heChzdGFydCwgbWFwLT52bWEtPnZtX3N0YXJ0KTsKLQltZW5kICAgPSBt aW4oZW5kLCAgIG1hcC0+dm1hLT52bV9lbmQpOworCW1zdGFydCA9IG1heChyYW5nZS0+c3RhcnQs IG1hcC0+dm1hLT52bV9zdGFydCk7CisJbWVuZCA9IG1pbihyYW5nZS0+ZW5kLCBtYXAtPnZtYS0+ dm1fZW5kKTsKIAlwcl9kZWJ1ZygibWFwICVkKyVkICglbHggJWx4KSwgcmFuZ2UgJWx4ICVseCwg bXJhbmdlICVseCAlbHhcbiIsCiAJCQltYXAtPmluZGV4LCBtYXAtPmNvdW50LAogCQkJbWFwLT52 bWEtPnZtX3N0YXJ0LCBtYXAtPnZtYS0+dm1fZW5kLAotCQkJc3RhcnQsIGVuZCwgbXN0YXJ0LCBt ZW5kKTsKKwkJCXJhbmdlLT5zdGFydCwgcmFuZ2UtPmVuZCwgbXN0YXJ0LCBtZW5kKTsKIAllcnIg PSB1bm1hcF9ncmFudF9wYWdlcyhtYXAsCiAJCQkJKG1zdGFydCAtIG1hcC0+dm1hLT52bV9zdGFy dCkgPj4gUEFHRV9TSElGVCwKIAkJCQkobWVuZCAtIG1zdGFydCkgPj4gUEFHRV9TSElGVCk7CiAJ V0FSTl9PTihlcnIpOwogCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgbW5faW52bF9yYW5n ZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICptbiwKLQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qg bW11X25vdGlmaWVyX3JhbmdlICpyYW5nZSkKLXsKLQlzdHJ1Y3QgZ250ZGV2X3ByaXYgKnByaXYg PSBjb250YWluZXJfb2YobW4sIHN0cnVjdCBnbnRkZXZfcHJpdiwgbW4pOwotCXN0cnVjdCBnbnRk ZXZfZ3JhbnRfbWFwICptYXA7Ci0JaW50IHJldCA9IDA7Ci0KLQlpZiAobW11X25vdGlmaWVyX3Jh bmdlX2Jsb2NrYWJsZShyYW5nZSkpCi0JCW11dGV4X2xvY2soJnByaXYtPmxvY2spOwotCWVsc2Ug aWYgKCFtdXRleF90cnlsb2NrKCZwcml2LT5sb2NrKSkKLQkJcmV0dXJuIC1FQUdBSU47Ci0KLQls aXN0X2Zvcl9lYWNoX2VudHJ5KG1hcCwgJnByaXYtPm1hcHMsIG5leHQpIHsKLQkJcmV0ID0gdW5t YXBfaWZfaW5fcmFuZ2UobWFwLCByYW5nZS0+c3RhcnQsIHJhbmdlLT5lbmQsCi0JCQkJCW1tdV9u b3RpZmllcl9yYW5nZV9ibG9ja2FibGUocmFuZ2UpKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gb3V0 X3VubG9jazsKLQl9Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShtYXAsICZwcml2LT5mcmVlYWJsZV9t YXBzLCBuZXh0KSB7Ci0JCXJldCA9IHVubWFwX2lmX2luX3JhbmdlKG1hcCwgcmFuZ2UtPnN0YXJ0 LCByYW5nZS0+ZW5kLAotCQkJCQltbXVfbm90aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHJhbmdlKSk7 Ci0JCWlmIChyZXQpCi0JCQlnb3RvIG91dF91bmxvY2s7Ci0JfQotCi1vdXRfdW5sb2NrOgotCW11 dGV4X3VubG9jaygmcHJpdi0+bG9jayk7Ci0KLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgdm9p ZCBtbl9yZWxlYXNlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAotCQkgICAgICAgc3RydWN0IG1t X3N0cnVjdCAqbW0pCi17Ci0Jc3RydWN0IGdudGRldl9wcml2ICpwcml2ID0gY29udGFpbmVyX29m KG1uLCBzdHJ1Y3QgZ250ZGV2X3ByaXYsIG1uKTsKLQlzdHJ1Y3QgZ250ZGV2X2dyYW50X21hcCAq bWFwOwotCWludCBlcnI7Ci0KLQltdXRleF9sb2NrKCZwcml2LT5sb2NrKTsKLQlsaXN0X2Zvcl9l YWNoX2VudHJ5KG1hcCwgJnByaXYtPm1hcHMsIG5leHQpIHsKLQkJaWYgKCFtYXAtPnZtYSkKLQkJ CWNvbnRpbnVlOwotCQlwcl9kZWJ1ZygibWFwICVkKyVkICglbHggJWx4KVxuIiwKLQkJCQltYXAt PmluZGV4LCBtYXAtPmNvdW50LAotCQkJCW1hcC0+dm1hLT52bV9zdGFydCwgbWFwLT52bWEtPnZt X2VuZCk7Ci0JCWVyciA9IHVubWFwX2dyYW50X3BhZ2VzKG1hcCwgLyogb2Zmc2V0ICovIDAsIG1h cC0+Y291bnQpOwotCQlXQVJOX09OKGVycik7Ci0JfQotCWxpc3RfZm9yX2VhY2hfZW50cnkobWFw LCAmcHJpdi0+ZnJlZWFibGVfbWFwcywgbmV4dCkgewotCQlpZiAoIW1hcC0+dm1hKQotCQkJY29u dGludWU7Ci0JCXByX2RlYnVnKCJtYXAgJWQrJWQgKCVseCAlbHgpXG4iLAotCQkJCW1hcC0+aW5k ZXgsIG1hcC0+Y291bnQsCi0JCQkJbWFwLT52bWEtPnZtX3N0YXJ0LCBtYXAtPnZtYS0+dm1fZW5k KTsKLQkJZXJyID0gdW5tYXBfZ3JhbnRfcGFnZXMobWFwLCAvKiBvZmZzZXQgKi8gMCwgbWFwLT5j b3VudCk7Ci0JCVdBUk5fT04oZXJyKTsKLQl9Ci0JbXV0ZXhfdW5sb2NrKCZwcml2LT5sb2NrKTsK KwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3Bz IGdudGRldl9tbXVfb3BzID0gewotCS5yZWxlYXNlICAgICAgICAgICAgICAgID0gbW5fcmVsZWFz ZSwKLQkuaW52YWxpZGF0ZV9yYW5nZV9zdGFydCA9IG1uX2ludmxfcmFuZ2Vfc3RhcnQsCitzdGF0 aWMgY29uc3Qgc3RydWN0IG1tdV9yYW5nZV9ub3RpZmllcl9vcHMgZ250ZGV2X21tdV9vcHMgPSB7 CisJLmludmFsaWRhdGUgPSBnbnRkZXZfaW52YWxpZGF0ZSwKIH07CiAKIC8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAq LwpAQCAtNTk0LDcgKzUxNCw2IEBAIHN0YXRpYyBpbnQgZ250ZGV2X29wZW4oc3RydWN0IGlub2Rl ICppbm9kZSwgc3RydWN0IGZpbGUgKmZsaXApCiAJCXJldHVybiAtRU5PTUVNOwogCiAJSU5JVF9M SVNUX0hFQUQoJnByaXYtPm1hcHMpOwotCUlOSVRfTElTVF9IRUFEKCZwcml2LT5mcmVlYWJsZV9t YXBzKTsKIAltdXRleF9pbml0KCZwcml2LT5sb2NrKTsKIAogI2lmZGVmIENPTkZJR19YRU5fR05U REVWX0RNQUJVRgpAQCAtNjA2LDE3ICs1MjUsNiBAQCBzdGF0aWMgaW50IGdudGRldl9vcGVuKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmbGlwKQogCX0KICNlbmRpZgogCi0JaWYg KHVzZV9wdGVtb2QpIHsKLQkJcHJpdi0+bW0gPSBnZXRfdGFza19tbShjdXJyZW50KTsKLQkJaWYg KCFwcml2LT5tbSkgewotCQkJa2ZyZWUocHJpdik7Ci0JCQlyZXR1cm4gLUVOT01FTTsKLQkJfQot CQlwcml2LT5tbi5vcHMgPSAmZ250ZGV2X21tdV9vcHM7Ci0JCXJldCA9IG1tdV9ub3RpZmllcl9y ZWdpc3RlcigmcHJpdi0+bW4sIHByaXYtPm1tKTsKLQkJbW1wdXQocHJpdi0+bW0pOwotCX0KLQog CWlmIChyZXQpIHsKIAkJa2ZyZWUocHJpdik7CiAJCXJldHVybiByZXQ7CkBAIC02NTMsMTYgKzU2 MSwxMiBAQCBzdGF0aWMgaW50IGdudGRldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0 cnVjdCBmaWxlICpmbGlwKQogCQlsaXN0X2RlbCgmbWFwLT5uZXh0KTsKIAkJZ250ZGV2X3B1dF9t YXAoTlVMTCAvKiBhbHJlYWR5IHJlbW92ZWQgKi8sIG1hcCk7CiAJfQotCVdBUk5fT04oIWxpc3Rf ZW1wdHkoJnByaXYtPmZyZWVhYmxlX21hcHMpKTsKIAltdXRleF91bmxvY2soJnByaXYtPmxvY2sp OwogCiAjaWZkZWYgQ09ORklHX1hFTl9HTlRERVZfRE1BQlVGCiAJZ250ZGV2X2RtYWJ1Zl9maW5p KHByaXYtPmRtYWJ1Zl9wcml2KTsKICNlbmRpZgogCi0JaWYgKHVzZV9wdGVtb2QpCi0JCW1tdV9u b3RpZmllcl91bnJlZ2lzdGVyKCZwcml2LT5tbiwgcHJpdi0+bW0pOwotCiAJa2ZyZWUocHJpdik7 CiAJcmV0dXJuIDA7CiB9CkBAIC03MjMsOCArNjI3LDYgQEAgc3RhdGljIGxvbmcgZ250ZGV2X2lv Y3RsX3VubWFwX2dyYW50X3JlZihzdHJ1Y3QgZ250ZGV2X3ByaXYgKnByaXYsCiAJbWFwID0gZ250 ZGV2X2ZpbmRfbWFwX2luZGV4KHByaXYsIG9wLmluZGV4ID4+IFBBR0VfU0hJRlQsIG9wLmNvdW50 KTsKIAlpZiAobWFwKSB7CiAJCWxpc3RfZGVsKCZtYXAtPm5leHQpOwotCQlpZiAocG9wdWxhdGVf ZnJlZWFibGVfbWFwcykKLQkJCWxpc3RfYWRkX3RhaWwoJm1hcC0+bmV4dCwgJnByaXYtPmZyZWVh YmxlX21hcHMpOwogCQllcnIgPSAwOwogCX0KIAltdXRleF91bmxvY2soJnByaXYtPmxvY2spOwpA QCAtMTA5NiwxMSArOTk4LDYgQEAgc3RhdGljIGludCBnbnRkZXZfbW1hcChzdHJ1Y3QgZmlsZSAq ZmxpcCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCiAJCWdvdG8gdW5sb2NrX291dDsKIAlp ZiAodXNlX3B0ZW1vZCAmJiBtYXAtPnZtYSkKIAkJZ290byB1bmxvY2tfb3V0OwotCWlmICh1c2Vf cHRlbW9kICYmIHByaXYtPm1tICE9IHZtYS0+dm1fbW0pIHsKLQkJcHJfd2FybigiSHVoPyBPdGhl ciBtbT9cbiIpOwotCQlnb3RvIHVubG9ja19vdXQ7Ci0JfQotCiAJcmVmY291bnRfaW5jKCZtYXAt PnVzZXJzKTsKIAogCXZtYS0+dm1fb3BzID0gJmdudGRldl92bW9wczsKQEAgLTExMTEsMTAgKzEw MDgsNiBAQCBzdGF0aWMgaW50IGdudGRldl9tbWFwKHN0cnVjdCBmaWxlICpmbGlwLCBzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIAkJdm1hLT52bV9mbGFncyB8PSBWTV9ET05UQ09QWTsKIAog CXZtYS0+dm1fcHJpdmF0ZV9kYXRhID0gbWFwOwotCi0JaWYgKHVzZV9wdGVtb2QpCi0JCW1hcC0+ dm1hID0gdm1hOwotCiAJaWYgKG1hcC0+ZmxhZ3MpIHsKIAkJaWYgKCh2bWEtPnZtX2ZsYWdzICYg Vk1fV1JJVEUpICYmCiAJCQkJKG1hcC0+ZmxhZ3MgJiBHTlRNQVBfcmVhZG9ubHkpKQpAQCAtMTEy NSw4ICsxMDE4LDI4IEBAIHN0YXRpYyBpbnQgZ250ZGV2X21tYXAoc3RydWN0IGZpbGUgKmZsaXAs IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQogCQkJbWFwLT5mbGFncyB8PSBHTlRNQVBfcmVh ZG9ubHk7CiAJfQogCisJaWYgKHVzZV9wdGVtb2QpIHsKKwkJbWFwLT52bWEgPSB2bWE7CisJCWVy ciA9IG1tdV9yYW5nZV9ub3RpZmllcl9pbnNlcnRfbG9ja2VkKAorCQkJJm1hcC0+bm90aWZpZXIs IHZtYS0+dm1fc3RhcnQsCisJCQl2bWEtPnZtX2VuZCAtIHZtYS0+dm1fc3RhcnQsIHZtYS0+dm1f bW0pOworCQlpZiAoZXJyKQorCQkJZ290byBvdXRfdW5sb2NrX3B1dDsKKwl9CiAJbXV0ZXhfdW5s b2NrKCZwcml2LT5sb2NrKTsKIAorCS8qCisJICogZ250ZGV2IHRha2VzIHRoZSBhZGRyZXNzIG9m IHRoZSBQVEUgaW4gZmluZF9ncmFudF9wdGVzKCkgYW5kIHBhc3NlcworCSAqIGl0IHRvIHRoZSBo eXBlcnZpc29yIGluIGdudGRldl9tYXBfZ3JhbnRfcGFnZXMoKS4gVGhlIHB1cnBvc2Ugb2YKKwkg KiB0aGUgbm90aWZpZXIgaXMgdG8gcHJldmVudCB0aGUgaHlwZXJ2aXNvciBwb2ludGVyIHRvIHRo ZSBQVEUgZnJvbQorCSAqIGdvaW5nIHN0YWxlLgorCSAqCisJICogU2luY2UgdGhpcyB2bWEncyBt YXBwaW5ncyBjYW4ndCBiZSB0b3VjaGVkIHdpdGhvdXQgdGhlIG1tYXBfc2VtLAorCSAqIGFuZCB3 ZSBhcmUgaG9sZGluZyBpdCBub3csIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoZSBub3RpZmllcl9y YW5nZQorCSAqIGxvY2tpbmcgcGF0dGVybi4KKwkgKi8KKwltbXVfcmFuZ2VfcmVhZF9iZWdpbigm bWFwLT5ub3RpZmllcik7CisKIAlpZiAodXNlX3B0ZW1vZCkgewogCQltYXAtPnBhZ2VzX3ZtX3N0 YXJ0ID0gdm1hLT52bV9zdGFydDsKIAkJZXJyID0gYXBwbHlfdG9fcGFnZV9yYW5nZSh2bWEtPnZt X21tLCB2bWEtPnZtX3N0YXJ0LApAQCAtMTE3NSw4ICsxMDg4LDExIEBAIHN0YXRpYyBpbnQgZ250 ZGV2X21tYXAoc3RydWN0IGZpbGUgKmZsaXAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQog CW11dGV4X3VubG9jaygmcHJpdi0+bG9jayk7CiBvdXRfcHV0X21hcDoKIAlpZiAodXNlX3B0ZW1v ZCkgewotCQltYXAtPnZtYSA9IE5VTEw7CiAJCXVubWFwX2dyYW50X3BhZ2VzKG1hcCwgMCwgbWFw LT5jb3VudCk7CisJCWlmIChtYXAtPnZtYSkgeworCQkJbW11X3JhbmdlX25vdGlmaWVyX3JlbW92 ZSgmbWFwLT5ub3RpZmllcik7CisJCQltYXAtPnZtYSA9IE5VTEw7CisJCX0KIAl9CiAJZ250ZGV2 X3B1dF9tYXAocHJpdiwgbWFwKTsKIAlyZXR1cm4gZXJyOwotLSAKMi4yMy4wCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlz dAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZng=