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 E9581CA9ECE for ; Mon, 28 Oct 2019 20:10:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B2E0D208C0 for ; Mon, 28 Oct 2019 20:10:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=ziepe.ca header.i=@ziepe.ca header.b="JDfbNHty" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729230AbfJ1UKw (ORCPT ); Mon, 28 Oct 2019 16:10:52 -0400 Received: from mail-qk1-f195.google.com ([209.85.222.195]:45728 "EHLO mail-qk1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727650AbfJ1UKv (ORCPT ); Mon, 28 Oct 2019 16:10:51 -0400 Received: by mail-qk1-f195.google.com with SMTP id q70so9742885qke.12 for ; Mon, 28 Oct 2019 13:10:50 -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=PQZNLb2n/VZGpEmak/Qy43FMq9i6D/cb88Nb6FZ4HCc=; b=JDfbNHty1ny9u0tolzz+R0bxyhO0ollb7F5vPylbs5XjRPew3ElqUgkRpnO1KqyNHJ lbmxT+WbuV2iqQKttXAinvJg6mLlpZOBkINKsbyZqgOCdsmgbxz+ymyca8lTAo2EIudp RdrM54tOjIVl+x7WKO8GaCpeaojoHs5YLsjcx7foxAOaiA94okZYV8o6vQfQCwuPbxr0 yggvPWtLeAKJS+9waHFzTuYqiUemPetepD5ewVTHRTeKTa3PYZPmq7T889b0g2RSfWRi iL7jN1WDPg49bHl8qlfraAoRYGBU7o23Ymndp/Dt+umlDMRAc3zH7TPYUwjq23HTYvtx Z/OQ== 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=PQZNLb2n/VZGpEmak/Qy43FMq9i6D/cb88Nb6FZ4HCc=; b=VrBI8dnVz5NzzMr68Jmkxtmr79BhYsuezqyGhG+J1oRdilrEd9fSA64LtevoidjfbU Z2StEJ9Mga6ijSDvyRtBle8LcWx5BGk23Fn8c3pXqJZdgR/8YZjbqGNoKoCxzPcsTM6Z aMG85lU5RMgnKzLoHFBwENiQiNkdBiuaB+vxZ1e6v/9lIa4hNATIYvgPl020NGjaTtNY 9uxYqpJigD/0SoYGZhs4OrL7tvKb6rS/HwiUbcO4MCfkh/FYbOqaUbXtx7RBAwM4kc9t b0tVyR0nUqdeS0HVb7paHvC4pwLTBvqb5f8/1L3CeZPdDAUeJZVADGRh3AXwTlbfiDdZ N/mQ== X-Gm-Message-State: APjAAAVYkUTNuCpMo8ftnnlQqVuwc3uu3gATxu5A1OyltE2I5tHFgyLh I0Cc9dFJbU88WN1Kc2/hzqS7OA== X-Google-Smtp-Source: APXvYqzMU7VQvTju2rb3w6e+2fL+RjV7hRaY2VBwnJrbzaMQL58Q1wBtGQ3o/J/TSiYTcAN3ImKl5A== X-Received: by 2002:a37:6643:: with SMTP id a64mr18555491qkc.144.1572293450333; Mon, 28 Oct 2019 13:10:50 -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 u9sm1501115qke.50.2019.10.28.13.10.43 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 28 Oct 2019 13:10:46 -0700 (PDT) Received: from jgg by mlx.ziepe.ca with local (Exim 4.90_1) (envelope-from ) id 1iPBLf-0001h3-HR; 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 11/15] nouveau: use mmu_range_notifier instead of hmm_mirror Date: Mon, 28 Oct 2019 17:10:28 -0300 Message-Id: <20191028201032.6352-12-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 Remove the hmm_mirror object and use the mmu_range_notifier API instead for the range, and use the normal mmu_notifier API for the general invalidation callback. While here re-organize the pagefault path so the locking pattern is clear. nouveau is the only driver that uses a temporary range object and instead forwards nearly every invalidation range directly to the HW. While this is not how the mmu_range_notifier was intended to be used, the overheads on the pagefaulting path are similar to the existing hmm_mirror version. Particularly since the interval tree will be small. Cc: Ben Skeggs Cc: dri-devel@lists.freedesktop.org Cc: nouveau@lists.freedesktop.org Cc: Ralph Campbell Signed-off-by: Jason Gunthorpe --- drivers/gpu/drm/nouveau/nouveau_svm.c | 180 ++++++++++++++------------ 1 file changed, 100 insertions(+), 80 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_svm.c b/drivers/gpu/drm/nouveau/nouveau_svm.c index 577f8811925a59..f27317fbe36f45 100644 --- a/drivers/gpu/drm/nouveau/nouveau_svm.c +++ b/drivers/gpu/drm/nouveau/nouveau_svm.c @@ -96,8 +96,6 @@ struct nouveau_svmm { } unmanaged; struct mutex mutex; - - struct hmm_mirror mirror; }; #define SVMM_DBG(s,f,a...) \ @@ -293,23 +291,11 @@ static const struct mmu_notifier_ops nouveau_mn_ops = { .free_notifier = nouveau_svmm_free_notifier, }; -static int -nouveau_svmm_sync_cpu_device_pagetables(struct hmm_mirror *mirror, - const struct mmu_notifier_range *update) -{ - return 0; -} - -static const struct hmm_mirror_ops nouveau_svmm = { - .sync_cpu_device_pagetables = nouveau_svmm_sync_cpu_device_pagetables, -}; - void nouveau_svmm_fini(struct nouveau_svmm **psvmm) { struct nouveau_svmm *svmm = *psvmm; if (svmm) { - hmm_mirror_unregister(&svmm->mirror); mutex_lock(&svmm->mutex); svmm->vmm = NULL; mutex_unlock(&svmm->mutex); @@ -357,15 +343,10 @@ nouveau_svmm_init(struct drm_device *dev, void *data, goto out_free; down_write(¤t->mm->mmap_sem); - svmm->mirror.ops = &nouveau_svmm; - ret = hmm_mirror_register(&svmm->mirror, current->mm); - if (ret) - goto out_mm_unlock; - svmm->notifier.ops = &nouveau_mn_ops; ret = __mmu_notifier_register(&svmm->notifier, current->mm); if (ret) - goto out_hmm_unregister; + goto out_mm_unlock; /* Note, ownership of svmm transfers to mmu_notifier */ cli->svm.svmm = svmm; @@ -374,8 +355,6 @@ nouveau_svmm_init(struct drm_device *dev, void *data, mutex_unlock(&cli->mutex); return 0; -out_hmm_unregister: - hmm_mirror_unregister(&svmm->mirror); out_mm_unlock: up_write(¤t->mm->mmap_sem); out_free: @@ -503,43 +482,91 @@ nouveau_svm_fault_cache(struct nouveau_svm *svm, fault->inst, fault->addr, fault->access); } -static inline bool -nouveau_range_done(struct hmm_range *range) +struct svm_notifier { + struct mmu_range_notifier notifier; + struct nouveau_svmm *svmm; +}; + +static bool nouveau_svm_range_invalidate(struct mmu_range_notifier *mrn, + const struct mmu_notifier_range *range, + unsigned long cur_seq) { - bool ret = hmm_range_valid(range); + struct svm_notifier *sn = + container_of(mrn, struct svm_notifier, notifier); - hmm_range_unregister(range); - return ret; + /* + * serializes the update to mrn->invalidate_seq done by caller and + * prevents invalidation of the PTE from progressing while HW is being + * programmed. This is very hacky and only works because the normal + * notifier that does invalidation is always called after the range + * notifier. + */ + if (mmu_notifier_range_blockable(range)) + mutex_lock(&sn->svmm->mutex); + else if (!mutex_trylock(&sn->svmm->mutex)) + return false; + mmu_range_set_seq(mrn, cur_seq); + mutex_unlock(&sn->svmm->mutex); + return true; } -static int -nouveau_range_fault(struct nouveau_svmm *svmm, struct hmm_range *range) +static const struct mmu_range_notifier_ops nouveau_svm_mrn_ops = { + .invalidate = nouveau_svm_range_invalidate, +}; + +static int nouveau_range_fault(struct nouveau_svmm *svmm, + struct nouveau_drm *drm, void *data, u32 size, + u64 *pfns, + struct svm_notifier *notifier) { + unsigned long timeout = + jiffies + msecs_to_jiffies(HMM_RANGE_DEFAULT_TIMEOUT); + /* Have HMM fault pages within the fault window to the GPU. */ + struct hmm_range range = { + .notifier = ¬ifier->notifier, + .start = notifier->notifier.interval_tree.start, + .end = notifier->notifier.interval_tree.last + 1, + .pfns = pfns, + .flags = nouveau_svm_pfn_flags, + .values = nouveau_svm_pfn_values, + .pfn_shift = NVIF_VMM_PFNMAP_V0_ADDR_SHIFT, + }; + struct mm_struct *mm = notifier->notifier.mm; long ret; - range->default_flags = 0; - range->pfn_flags_mask = -1UL; + while (true) { + if (time_after(jiffies, timeout)) + return -EBUSY; - ret = hmm_range_register(range, &svmm->mirror); - if (ret) { - up_read(&svmm->notifier.mm->mmap_sem); - return (int)ret; - } + range.notifier_seq = mmu_range_read_begin(range.notifier); + range.default_flags = 0; + range.pfn_flags_mask = -1UL; + down_read(&mm->mmap_sem); + ret = hmm_range_fault(&range, 0); + up_read(&mm->mmap_sem); + if (ret <= 0) { + if (ret == 0 || ret == -EBUSY) + continue; + return ret; + } - if (!hmm_range_wait_until_valid(range, HMM_RANGE_DEFAULT_TIMEOUT)) { - up_read(&svmm->notifier.mm->mmap_sem); - return -EBUSY; + mutex_lock(&svmm->mutex); + if (mmu_range_read_retry(range.notifier, + range.notifier_seq)) { + mutex_unlock(&svmm->mutex); + continue; + } + break; } - ret = hmm_range_fault(range, 0); - if (ret <= 0) { - if (ret == 0) - ret = -EBUSY; - up_read(&svmm->notifier.mm->mmap_sem); - hmm_range_unregister(range); - return ret; - } - return 0; + nouveau_dmem_convert_pfn(drm, &range); + + svmm->vmm->vmm.object.client->super = true; + ret = nvif_object_ioctl(&svmm->vmm->vmm.object, data, size, NULL); + svmm->vmm->vmm.object.client->super = false; + mutex_unlock(&svmm->mutex); + + return ret; } static int @@ -559,7 +586,6 @@ nouveau_svm_fault(struct nvif_notify *notify) } i; u64 phys[16]; } args; - struct hmm_range range; struct vm_area_struct *vma; u64 inst, start, limit; int fi, fn, pi, fill; @@ -615,6 +641,7 @@ nouveau_svm_fault(struct nvif_notify *notify) args.i.p.version = 0; for (fi = 0; fn = fi + 1, fi < buffer->fault_nr; fi = fn) { + struct svm_notifier notifier; struct mm_struct *mm; /* Cancel any faults from non-SVM channels. */ @@ -623,7 +650,6 @@ nouveau_svm_fault(struct nvif_notify *notify) continue; } SVMM_DBG(svmm, "addr %016llx", buffer->fault[fi]->addr); - mm = svmm->notifier.mm; /* We try and group handling of faults within a small * window into a single update. @@ -637,6 +663,12 @@ nouveau_svm_fault(struct nvif_notify *notify) start = max_t(u64, start, svmm->unmanaged.limit); SVMM_DBG(svmm, "wndw %016llx-%016llx", start, limit); + mm = svmm->notifier.mm; + if (!mmget_not_zero(mm)) { + nouveau_svm_fault_cancel_fault(svm, buffer->fault[fi]); + continue; + } + /* Intersect fault window with the CPU VMA, cancelling * the fault if the address is invalid. */ @@ -645,16 +677,18 @@ nouveau_svm_fault(struct nvif_notify *notify) if (!vma) { SVMM_ERR(svmm, "wndw %016llx-%016llx", start, limit); up_read(&mm->mmap_sem); + mmput(mm); nouveau_svm_fault_cancel_fault(svm, buffer->fault[fi]); continue; } start = max_t(u64, start, vma->vm_start); limit = min_t(u64, limit, vma->vm_end); + up_read(&mm->mmap_sem); SVMM_DBG(svmm, "wndw %016llx-%016llx", start, limit); if (buffer->fault[fi]->addr != start) { SVMM_ERR(svmm, "addr %016llx", buffer->fault[fi]->addr); - up_read(&mm->mmap_sem); + mmput(mm); nouveau_svm_fault_cancel_fault(svm, buffer->fault[fi]); continue; } @@ -710,33 +744,19 @@ nouveau_svm_fault(struct nvif_notify *notify) args.i.p.addr, args.i.p.addr + args.i.p.size, fn - fi); - /* Have HMM fault pages within the fault window to the GPU. */ - range.start = args.i.p.addr; - range.end = args.i.p.addr + args.i.p.size; - range.pfns = args.phys; - range.flags = nouveau_svm_pfn_flags; - range.values = nouveau_svm_pfn_values; - range.pfn_shift = NVIF_VMM_PFNMAP_V0_ADDR_SHIFT; -again: - ret = nouveau_range_fault(svmm, &range); - if (ret == 0) { - mutex_lock(&svmm->mutex); - if (!nouveau_range_done(&range)) { - mutex_unlock(&svmm->mutex); - goto again; - } - - nouveau_dmem_convert_pfn(svm->drm, &range); - - svmm->vmm->vmm.object.client->super = true; - ret = nvif_object_ioctl(&svmm->vmm->vmm.object, - &args, sizeof(args.i) + - pi * sizeof(args.phys[0]), - NULL); - svmm->vmm->vmm.object.client->super = false; - mutex_unlock(&svmm->mutex); - up_read(&mm->mmap_sem); + notifier.svmm = svmm; + notifier.notifier.ops = &nouveau_svm_mrn_ops; + ret = mmu_range_notifier_insert(¬ifier.notifier, + args.i.p.addr, args.i.p.size, + svmm->notifier.mm); + if (!ret) { + ret = nouveau_range_fault( + svmm, svm->drm, &args, + sizeof(args.i) + pi * sizeof(args.phys[0]), + args.phys, ¬ifier); + mmu_range_notifier_remove(¬ifier.notifier); } + mmput(mm); /* Cancel any faults in the window whose pages didn't manage * to keep their valid bit, or stay writeable when required. @@ -745,10 +765,10 @@ nouveau_svm_fault(struct nvif_notify *notify) */ while (fi < fn) { struct nouveau_svm_fault *fault = buffer->fault[fi++]; - pi = (fault->addr - range.start) >> PAGE_SHIFT; + pi = (fault->addr - args.i.p.addr) >> PAGE_SHIFT; if (ret || - !(range.pfns[pi] & NVIF_VMM_PFNMAP_V0_V) || - (!(range.pfns[pi] & NVIF_VMM_PFNMAP_V0_W) && + !(args.phys[pi] & NVIF_VMM_PFNMAP_V0_V) || + (!(args.phys[pi] & NVIF_VMM_PFNMAP_V0_W) && fault->access != 0 && fault->access != 3)) { nouveau_svm_fault_cancel_fault(svm, fault); continue; -- 2.23.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Gunthorpe Subject: [PATCH v2 11/15] nouveau: use mmu_range_notifier instead of hmm_mirror Date: Mon, 28 Oct 2019 17:10:28 -0300 Message-ID: <20191028201032.6352-12-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 RnJvbTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgoKUmVtb3ZlIHRoZSBobW1f bWlycm9yIG9iamVjdCBhbmQgdXNlIHRoZSBtbXVfcmFuZ2Vfbm90aWZpZXIgQVBJIGluc3RlYWQK Zm9yIHRoZSByYW5nZSwgYW5kIHVzZSB0aGUgbm9ybWFsIG1tdV9ub3RpZmllciBBUEkgZm9yIHRo ZSBnZW5lcmFsCmludmFsaWRhdGlvbiBjYWxsYmFjay4KCldoaWxlIGhlcmUgcmUtb3JnYW5pemUg dGhlIHBhZ2VmYXVsdCBwYXRoIHNvIHRoZSBsb2NraW5nIHBhdHRlcm4gaXMgY2xlYXIuCgpub3V2 ZWF1IGlzIHRoZSBvbmx5IGRyaXZlciB0aGF0IHVzZXMgYSB0ZW1wb3JhcnkgcmFuZ2Ugb2JqZWN0 IGFuZCBpbnN0ZWFkCmZvcndhcmRzIG5lYXJseSBldmVyeSBpbnZhbGlkYXRpb24gcmFuZ2UgZGly ZWN0bHkgdG8gdGhlIEhXLiBXaGlsZSB0aGlzIGlzCm5vdCBob3cgdGhlIG1tdV9yYW5nZV9ub3Rp ZmllciB3YXMgaW50ZW5kZWQgdG8gYmUgdXNlZCwgdGhlIG92ZXJoZWFkcyBvbgp0aGUgcGFnZWZh dWx0aW5nIHBhdGggYXJlIHNpbWlsYXIgdG8gdGhlIGV4aXN0aW5nIGhtbV9taXJyb3IgdmVyc2lv bi4KUGFydGljdWxhcmx5IHNpbmNlIHRoZSBpbnRlcnZhbCB0cmVlIHdpbGwgYmUgc21hbGwuCgpD YzogQmVuIFNrZWdncyA8YnNrZWdnc0ByZWRoYXQuY29tPgpDYzogZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpDYzogbm91dmVhdUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKQ2M6IFJhbHBo IENhbXBiZWxsIDxyY2FtcGJlbGxAbnZpZGlhLmNvbT4KU2lnbmVkLW9mZi1ieTogSmFzb24gR3Vu dGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25v dXZlYXVfc3ZtLmMgfCAxODAgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgODAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2 ZWF1L25vdXZlYXVfc3ZtLmMKaW5kZXggNTc3Zjg4MTE5MjVhNTkuLmYyNzMxN2ZiZTM2ZjQ1IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmMKQEAgLTk2LDggKzk2LDYgQEAgc3Ry dWN0IG5vdXZlYXVfc3ZtbSB7CiAJfSB1bm1hbmFnZWQ7CiAKIAlzdHJ1Y3QgbXV0ZXggbXV0ZXg7 Ci0KLQlzdHJ1Y3QgaG1tX21pcnJvciBtaXJyb3I7CiB9OwogCiAjZGVmaW5lIFNWTU1fREJHKHMs ZixhLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXApAQCAtMjkzLDIzICsyOTEsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZp ZXJfb3BzIG5vdXZlYXVfbW5fb3BzID0gewogCS5mcmVlX25vdGlmaWVyID0gbm91dmVhdV9zdm1t X2ZyZWVfbm90aWZpZXIsCiB9OwogCi1zdGF0aWMgaW50Ci1ub3V2ZWF1X3N2bW1fc3luY19jcHVf ZGV2aWNlX3BhZ2V0YWJsZXMoc3RydWN0IGhtbV9taXJyb3IgKm1pcnJvciwKLQkJCQkJY29uc3Qg c3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqdXBkYXRlKQotewotCXJldHVybiAwOwotfQotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGhtbV9taXJyb3Jfb3BzIG5vdXZlYXVfc3ZtbSA9IHsKLQkuc3lu Y19jcHVfZGV2aWNlX3BhZ2V0YWJsZXMgPSBub3V2ZWF1X3N2bW1fc3luY19jcHVfZGV2aWNlX3Bh Z2V0YWJsZXMsCi19OwotCiB2b2lkCiBub3V2ZWF1X3N2bW1fZmluaShzdHJ1Y3Qgbm91dmVhdV9z dm1tICoqcHN2bW0pCiB7CiAJc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSA9ICpwc3ZtbTsKIAlp ZiAoc3ZtbSkgewotCQlobW1fbWlycm9yX3VucmVnaXN0ZXIoJnN2bW0tPm1pcnJvcik7CiAJCW11 dGV4X2xvY2soJnN2bW0tPm11dGV4KTsKIAkJc3ZtbS0+dm1tID0gTlVMTDsKIAkJbXV0ZXhfdW5s b2NrKCZzdm1tLT5tdXRleCk7CkBAIC0zNTcsMTUgKzM0MywxMCBAQCBub3V2ZWF1X3N2bW1faW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQlnb3RvIG91dF9mcmVlOwog CiAJZG93bl93cml0ZSgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKLQlzdm1tLT5taXJyb3Iub3Bz ID0gJm5vdXZlYXVfc3ZtbTsKLQlyZXQgPSBobW1fbWlycm9yX3JlZ2lzdGVyKCZzdm1tLT5taXJy b3IsIGN1cnJlbnQtPm1tKTsKLQlpZiAocmV0KQotCQlnb3RvIG91dF9tbV91bmxvY2s7Ci0KIAlz dm1tLT5ub3RpZmllci5vcHMgPSAmbm91dmVhdV9tbl9vcHM7CiAJcmV0ID0gX19tbXVfbm90aWZp ZXJfcmVnaXN0ZXIoJnN2bW0tPm5vdGlmaWVyLCBjdXJyZW50LT5tbSk7CiAJaWYgKHJldCkKLQkJ Z290byBvdXRfaG1tX3VucmVnaXN0ZXI7CisJCWdvdG8gb3V0X21tX3VubG9jazsKIAkvKiBOb3Rl LCBvd25lcnNoaXAgb2Ygc3ZtbSB0cmFuc2ZlcnMgdG8gbW11X25vdGlmaWVyICovCiAKIAljbGkt PnN2bS5zdm1tID0gc3ZtbTsKQEAgLTM3NCw4ICszNTUsNiBAQCBub3V2ZWF1X3N2bW1faW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCW11dGV4X3VubG9jaygmY2xpLT5t dXRleCk7CiAJcmV0dXJuIDA7CiAKLW91dF9obW1fdW5yZWdpc3RlcjoKLQlobW1fbWlycm9yX3Vu cmVnaXN0ZXIoJnN2bW0tPm1pcnJvcik7CiBvdXRfbW1fdW5sb2NrOgogCXVwX3dyaXRlKCZjdXJy ZW50LT5tbS0+bW1hcF9zZW0pOwogb3V0X2ZyZWU6CkBAIC01MDMsNDMgKzQ4Miw5MSBAQCBub3V2 ZWF1X3N2bV9mYXVsdF9jYWNoZShzdHJ1Y3Qgbm91dmVhdV9zdm0gKnN2bSwKIAkJZmF1bHQtPmlu c3QsIGZhdWx0LT5hZGRyLCBmYXVsdC0+YWNjZXNzKTsKIH0KIAotc3RhdGljIGlubGluZSBib29s Ci1ub3V2ZWF1X3JhbmdlX2RvbmUoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UpCitzdHJ1Y3Qgc3Zt X25vdGlmaWVyIHsKKwlzdHJ1Y3QgbW11X3JhbmdlX25vdGlmaWVyIG5vdGlmaWVyOworCXN0cnVj dCBub3V2ZWF1X3N2bW0gKnN2bW07Cit9OworCitzdGF0aWMgYm9vbCBub3V2ZWF1X3N2bV9yYW5n ZV9pbnZhbGlkYXRlKHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZpZXIgKm1ybiwKKwkJCQkJIGNvbnN0 IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlLAorCQkJCQkgdW5zaWduZWQgbG9uZyBj dXJfc2VxKQogewotCWJvb2wgcmV0ID0gaG1tX3JhbmdlX3ZhbGlkKHJhbmdlKTsKKwlzdHJ1Y3Qg c3ZtX25vdGlmaWVyICpzbiA9CisJCWNvbnRhaW5lcl9vZihtcm4sIHN0cnVjdCBzdm1fbm90aWZp ZXIsIG5vdGlmaWVyKTsKIAotCWhtbV9yYW5nZV91bnJlZ2lzdGVyKHJhbmdlKTsKLQlyZXR1cm4g cmV0OworCS8qCisJICogc2VyaWFsaXplcyB0aGUgdXBkYXRlIHRvIG1ybi0+aW52YWxpZGF0ZV9z ZXEgZG9uZSBieSBjYWxsZXIgYW5kCisJICogcHJldmVudHMgaW52YWxpZGF0aW9uIG9mIHRoZSBQ VEUgZnJvbSBwcm9ncmVzc2luZyB3aGlsZSBIVyBpcyBiZWluZworCSAqIHByb2dyYW1tZWQuIFRo aXMgaXMgdmVyeSBoYWNreSBhbmQgb25seSB3b3JrcyBiZWNhdXNlIHRoZSBub3JtYWwKKwkgKiBu b3RpZmllciB0aGF0IGRvZXMgaW52YWxpZGF0aW9uIGlzIGFsd2F5cyBjYWxsZWQgYWZ0ZXIgdGhl IHJhbmdlCisJICogbm90aWZpZXIuCisJICovCisJaWYgKG1tdV9ub3RpZmllcl9yYW5nZV9ibG9j a2FibGUocmFuZ2UpKQorCQltdXRleF9sb2NrKCZzbi0+c3ZtbS0+bXV0ZXgpOworCWVsc2UgaWYg KCFtdXRleF90cnlsb2NrKCZzbi0+c3ZtbS0+bXV0ZXgpKQorCQlyZXR1cm4gZmFsc2U7CisJbW11 X3JhbmdlX3NldF9zZXEobXJuLCBjdXJfc2VxKTsKKwltdXRleF91bmxvY2soJnNuLT5zdm1tLT5t dXRleCk7CisJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbnQKLW5vdXZlYXVfcmFuZ2VfZmF1 bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSwgc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UpCitz dGF0aWMgY29uc3Qgc3RydWN0IG1tdV9yYW5nZV9ub3RpZmllcl9vcHMgbm91dmVhdV9zdm1fbXJu X29wcyA9IHsKKwkuaW52YWxpZGF0ZSA9IG5vdXZlYXVfc3ZtX3JhbmdlX2ludmFsaWRhdGUsCit9 OworCitzdGF0aWMgaW50IG5vdXZlYXVfcmFuZ2VfZmF1bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAq c3ZtbSwKKwkJCSAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSwgdm9pZCAqZGF0YSwgdTMy IHNpemUsCisJCQkgICAgICAgdTY0ICpwZm5zLAorCQkJICAgICAgIHN0cnVjdCBzdm1fbm90aWZp ZXIgKm5vdGlmaWVyKQogeworCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9CisJCWppZmZpZXMgKyBt c2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpOworCS8qIEhhdmUgSE1N IGZhdWx0IHBhZ2VzIHdpdGhpbiB0aGUgZmF1bHQgd2luZG93IHRvIHRoZSBHUFUuICovCisJc3Ry dWN0IGhtbV9yYW5nZSByYW5nZSA9IHsKKwkJLm5vdGlmaWVyID0gJm5vdGlmaWVyLT5ub3RpZmll ciwKKwkJLnN0YXJ0ID0gbm90aWZpZXItPm5vdGlmaWVyLmludGVydmFsX3RyZWUuc3RhcnQsCisJ CS5lbmQgPSBub3RpZmllci0+bm90aWZpZXIuaW50ZXJ2YWxfdHJlZS5sYXN0ICsgMSwKKwkJLnBm bnMgPSBwZm5zLAorCQkuZmxhZ3MgPSBub3V2ZWF1X3N2bV9wZm5fZmxhZ3MsCisJCS52YWx1ZXMg PSBub3V2ZWF1X3N2bV9wZm5fdmFsdWVzLAorCQkucGZuX3NoaWZ0ID0gTlZJRl9WTU1fUEZOTUFQ X1YwX0FERFJfU0hJRlQsCisJfTsKKwlzdHJ1Y3QgbW1fc3RydWN0ICptbSA9IG5vdGlmaWVyLT5u b3RpZmllci5tbTsKIAlsb25nIHJldDsKIAotCXJhbmdlLT5kZWZhdWx0X2ZsYWdzID0gMDsKLQly YW5nZS0+cGZuX2ZsYWdzX21hc2sgPSAtMVVMOworCXdoaWxlICh0cnVlKSB7CisJCWlmICh0aW1l X2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKQorCQkJcmV0dXJuIC1FQlVTWTsKIAotCXJldCA9IGht bV9yYW5nZV9yZWdpc3RlcihyYW5nZSwgJnN2bW0tPm1pcnJvcik7Ci0JaWYgKHJldCkgewotCQl1 cF9yZWFkKCZzdm1tLT5ub3RpZmllci5tbS0+bW1hcF9zZW0pOwotCQlyZXR1cm4gKGludClyZXQ7 Ci0JfQorCQlyYW5nZS5ub3RpZmllcl9zZXEgPSBtbXVfcmFuZ2VfcmVhZF9iZWdpbihyYW5nZS5u b3RpZmllcik7CisJCXJhbmdlLmRlZmF1bHRfZmxhZ3MgPSAwOworCQlyYW5nZS5wZm5fZmxhZ3Nf bWFzayA9IC0xVUw7CisJCWRvd25fcmVhZCgmbW0tPm1tYXBfc2VtKTsKKwkJcmV0ID0gaG1tX3Jh bmdlX2ZhdWx0KCZyYW5nZSwgMCk7CisJCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7CisJCWlmIChy ZXQgPD0gMCkgeworCQkJaWYgKHJldCA9PSAwIHx8IHJldCA9PSAtRUJVU1kpCisJCQkJY29udGlu dWU7CisJCQlyZXR1cm4gcmV0OworCQl9CiAKLQlpZiAoIWhtbV9yYW5nZV93YWl0X3VudGlsX3Zh bGlkKHJhbmdlLCBITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKSkgewotCQl1cF9yZWFkKCZzdm1t LT5ub3RpZmllci5tbS0+bW1hcF9zZW0pOwotCQlyZXR1cm4gLUVCVVNZOworCQltdXRleF9sb2Nr KCZzdm1tLT5tdXRleCk7CisJCWlmIChtbXVfcmFuZ2VfcmVhZF9yZXRyeShyYW5nZS5ub3RpZmll ciwKKwkJCQkJIHJhbmdlLm5vdGlmaWVyX3NlcSkpIHsKKwkJCW11dGV4X3VubG9jaygmc3ZtbS0+ bXV0ZXgpOworCQkJY29udGludWU7CisJCX0KKwkJYnJlYWs7CiAJfQogCi0JcmV0ID0gaG1tX3Jh bmdlX2ZhdWx0KHJhbmdlLCAwKTsKLQlpZiAocmV0IDw9IDApIHsKLQkJaWYgKHJldCA9PSAwKQot CQkJcmV0ID0gLUVCVVNZOwotCQl1cF9yZWFkKCZzdm1tLT5ub3RpZmllci5tbS0+bW1hcF9zZW0p OwotCQlobW1fcmFuZ2VfdW5yZWdpc3RlcihyYW5nZSk7Ci0JCXJldHVybiByZXQ7Ci0JfQotCXJl dHVybiAwOworCW5vdXZlYXVfZG1lbV9jb252ZXJ0X3Bmbihkcm0sICZyYW5nZSk7CisKKwlzdm1t LT52bW0tPnZtbS5vYmplY3QuY2xpZW50LT5zdXBlciA9IHRydWU7CisJcmV0ID0gbnZpZl9vYmpl Y3RfaW9jdGwoJnN2bW0tPnZtbS0+dm1tLm9iamVjdCwgZGF0YSwgc2l6ZSwgTlVMTCk7CisJc3Zt bS0+dm1tLT52bW0ub2JqZWN0LmNsaWVudC0+c3VwZXIgPSBmYWxzZTsKKwltdXRleF91bmxvY2so JnN2bW0tPm11dGV4KTsKKworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTU1OSw3 ICs1ODYsNiBAQCBub3V2ZWF1X3N2bV9mYXVsdChzdHJ1Y3QgbnZpZl9ub3RpZnkgKm5vdGlmeSkK IAkJfSBpOwogCQl1NjQgcGh5c1sxNl07CiAJfSBhcmdzOwotCXN0cnVjdCBobW1fcmFuZ2UgcmFu Z2U7CiAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7CiAJdTY0IGluc3QsIHN0YXJ0LCBsaW1p dDsKIAlpbnQgZmksIGZuLCBwaSwgZmlsbDsKQEAgLTYxNSw2ICs2NDEsNyBAQCBub3V2ZWF1X3N2 bV9mYXVsdChzdHJ1Y3QgbnZpZl9ub3RpZnkgKm5vdGlmeSkKIAlhcmdzLmkucC52ZXJzaW9uID0g MDsKIAogCWZvciAoZmkgPSAwOyBmbiA9IGZpICsgMSwgZmkgPCBidWZmZXItPmZhdWx0X25yOyBm aSA9IGZuKSB7CisJCXN0cnVjdCBzdm1fbm90aWZpZXIgbm90aWZpZXI7CiAJCXN0cnVjdCBtbV9z dHJ1Y3QgKm1tOwogCiAJCS8qIENhbmNlbCBhbnkgZmF1bHRzIGZyb20gbm9uLVNWTSBjaGFubmVs cy4gKi8KQEAgLTYyMyw3ICs2NTAsNiBAQCBub3V2ZWF1X3N2bV9mYXVsdChzdHJ1Y3QgbnZpZl9u b3RpZnkgKm5vdGlmeSkKIAkJCWNvbnRpbnVlOwogCQl9CiAJCVNWTU1fREJHKHN2bW0sICJhZGRy ICUwMTZsbHgiLCBidWZmZXItPmZhdWx0W2ZpXS0+YWRkcik7Ci0JCW1tID0gc3ZtbS0+bm90aWZp ZXIubW07CiAKIAkJLyogV2UgdHJ5IGFuZCBncm91cCBoYW5kbGluZyBvZiBmYXVsdHMgd2l0aGlu IGEgc21hbGwKIAkJICogd2luZG93IGludG8gYSBzaW5nbGUgdXBkYXRlLgpAQCAtNjM3LDYgKzY2 MywxMiBAQCBub3V2ZWF1X3N2bV9mYXVsdChzdHJ1Y3QgbnZpZl9ub3RpZnkgKm5vdGlmeSkKIAkJ CXN0YXJ0ID0gbWF4X3QodTY0LCBzdGFydCwgc3ZtbS0+dW5tYW5hZ2VkLmxpbWl0KTsKIAkJU1ZN TV9EQkcoc3ZtbSwgInduZHcgJTAxNmxseC0lMDE2bGx4Iiwgc3RhcnQsIGxpbWl0KTsKIAorCQlt bSA9IHN2bW0tPm5vdGlmaWVyLm1tOworCQlpZiAoIW1tZ2V0X25vdF96ZXJvKG1tKSkgeworCQkJ bm91dmVhdV9zdm1fZmF1bHRfY2FuY2VsX2ZhdWx0KHN2bSwgYnVmZmVyLT5mYXVsdFtmaV0pOwor CQkJY29udGludWU7CisJCX0KKwogCQkvKiBJbnRlcnNlY3QgZmF1bHQgd2luZG93IHdpdGggdGhl IENQVSBWTUEsIGNhbmNlbGxpbmcKIAkJICogdGhlIGZhdWx0IGlmIHRoZSBhZGRyZXNzIGlzIGlu dmFsaWQuCiAJCSAqLwpAQCAtNjQ1LDE2ICs2NzcsMTggQEAgbm91dmVhdV9zdm1fZmF1bHQoc3Ry dWN0IG52aWZfbm90aWZ5ICpub3RpZnkpCiAJCWlmICghdm1hKSB7CiAJCQlTVk1NX0VSUihzdm1t LCAid25kdyAlMDE2bGx4LSUwMTZsbHgiLCBzdGFydCwgbGltaXQpOwogCQkJdXBfcmVhZCgmbW0t Pm1tYXBfc2VtKTsKKwkJCW1tcHV0KG1tKTsKIAkJCW5vdXZlYXVfc3ZtX2ZhdWx0X2NhbmNlbF9m YXVsdChzdm0sIGJ1ZmZlci0+ZmF1bHRbZmldKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCXN0YXJ0 ID0gbWF4X3QodTY0LCBzdGFydCwgdm1hLT52bV9zdGFydCk7CiAJCWxpbWl0ID0gbWluX3QodTY0 LCBsaW1pdCwgdm1hLT52bV9lbmQpOworCQl1cF9yZWFkKCZtbS0+bW1hcF9zZW0pOwogCQlTVk1N X0RCRyhzdm1tLCAid25kdyAlMDE2bGx4LSUwMTZsbHgiLCBzdGFydCwgbGltaXQpOwogCiAJCWlm IChidWZmZXItPmZhdWx0W2ZpXS0+YWRkciAhPSBzdGFydCkgewogCQkJU1ZNTV9FUlIoc3ZtbSwg ImFkZHIgJTAxNmxseCIsIGJ1ZmZlci0+ZmF1bHRbZmldLT5hZGRyKTsKLQkJCXVwX3JlYWQoJm1t LT5tbWFwX3NlbSk7CisJCQltbXB1dChtbSk7CiAJCQlub3V2ZWF1X3N2bV9mYXVsdF9jYW5jZWxf ZmF1bHQoc3ZtLCBidWZmZXItPmZhdWx0W2ZpXSk7CiAJCQljb250aW51ZTsKIAkJfQpAQCAtNzEw LDMzICs3NDQsMTkgQEAgbm91dmVhdV9zdm1fZmF1bHQoc3RydWN0IG52aWZfbm90aWZ5ICpub3Rp ZnkpCiAJCQkgYXJncy5pLnAuYWRkciwKIAkJCSBhcmdzLmkucC5hZGRyICsgYXJncy5pLnAuc2l6 ZSwgZm4gLSBmaSk7CiAKLQkJLyogSGF2ZSBITU0gZmF1bHQgcGFnZXMgd2l0aGluIHRoZSBmYXVs dCB3aW5kb3cgdG8gdGhlIEdQVS4gKi8KLQkJcmFuZ2Uuc3RhcnQgPSBhcmdzLmkucC5hZGRyOwot CQlyYW5nZS5lbmQgPSBhcmdzLmkucC5hZGRyICsgYXJncy5pLnAuc2l6ZTsKLQkJcmFuZ2UucGZu cyA9IGFyZ3MucGh5czsKLQkJcmFuZ2UuZmxhZ3MgPSBub3V2ZWF1X3N2bV9wZm5fZmxhZ3M7Ci0J CXJhbmdlLnZhbHVlcyA9IG5vdXZlYXVfc3ZtX3Bmbl92YWx1ZXM7Ci0JCXJhbmdlLnBmbl9zaGlm dCA9IE5WSUZfVk1NX1BGTk1BUF9WMF9BRERSX1NISUZUOwotYWdhaW46Ci0JCXJldCA9IG5vdXZl YXVfcmFuZ2VfZmF1bHQoc3ZtbSwgJnJhbmdlKTsKLQkJaWYgKHJldCA9PSAwKSB7Ci0JCQltdXRl eF9sb2NrKCZzdm1tLT5tdXRleCk7Ci0JCQlpZiAoIW5vdXZlYXVfcmFuZ2VfZG9uZSgmcmFuZ2Up KSB7Ci0JCQkJbXV0ZXhfdW5sb2NrKCZzdm1tLT5tdXRleCk7Ci0JCQkJZ290byBhZ2FpbjsKLQkJ CX0KLQotCQkJbm91dmVhdV9kbWVtX2NvbnZlcnRfcGZuKHN2bS0+ZHJtLCAmcmFuZ2UpOwotCi0J CQlzdm1tLT52bW0tPnZtbS5vYmplY3QuY2xpZW50LT5zdXBlciA9IHRydWU7Ci0JCQlyZXQgPSBu dmlmX29iamVjdF9pb2N0bCgmc3ZtbS0+dm1tLT52bW0ub2JqZWN0LAotCQkJCQkJJmFyZ3MsIHNp emVvZihhcmdzLmkpICsKLQkJCQkJCXBpICogc2l6ZW9mKGFyZ3MucGh5c1swXSksCi0JCQkJCQlO VUxMKTsKLQkJCXN2bW0tPnZtbS0+dm1tLm9iamVjdC5jbGllbnQtPnN1cGVyID0gZmFsc2U7Ci0J CQltdXRleF91bmxvY2soJnN2bW0tPm11dGV4KTsKLQkJCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7 CisJCW5vdGlmaWVyLnN2bW0gPSBzdm1tOworCQlub3RpZmllci5ub3RpZmllci5vcHMgPSAmbm91 dmVhdV9zdm1fbXJuX29wczsKKwkJcmV0ID0gbW11X3JhbmdlX25vdGlmaWVyX2luc2VydCgmbm90 aWZpZXIubm90aWZpZXIsCisJCQkJCQlhcmdzLmkucC5hZGRyLCBhcmdzLmkucC5zaXplLAorCQkJ CQkJc3ZtbS0+bm90aWZpZXIubW0pOworCQlpZiAoIXJldCkgeworCQkJcmV0ID0gbm91dmVhdV9y YW5nZV9mYXVsdCgKKwkJCQlzdm1tLCBzdm0tPmRybSwgJmFyZ3MsCisJCQkJc2l6ZW9mKGFyZ3Mu aSkgKyBwaSAqIHNpemVvZihhcmdzLnBoeXNbMF0pLAorCQkJCWFyZ3MucGh5cywgJm5vdGlmaWVy KTsKKwkJCW1tdV9yYW5nZV9ub3RpZmllcl9yZW1vdmUoJm5vdGlmaWVyLm5vdGlmaWVyKTsKIAkJ fQorCQltbXB1dChtbSk7CiAKIAkJLyogQ2FuY2VsIGFueSBmYXVsdHMgaW4gdGhlIHdpbmRvdyB3 aG9zZSBwYWdlcyBkaWRuJ3QgbWFuYWdlCiAJCSAqIHRvIGtlZXAgdGhlaXIgdmFsaWQgYml0LCBv ciBzdGF5IHdyaXRlYWJsZSB3aGVuIHJlcXVpcmVkLgpAQCAtNzQ1LDEwICs3NjUsMTAgQEAgbm91 dmVhdV9zdm1fZmF1bHQoc3RydWN0IG52aWZfbm90aWZ5ICpub3RpZnkpCiAJCSAqLwogCQl3aGls ZSAoZmkgPCBmbikgewogCQkJc3RydWN0IG5vdXZlYXVfc3ZtX2ZhdWx0ICpmYXVsdCA9IGJ1ZmZl ci0+ZmF1bHRbZmkrK107Ci0JCQlwaSA9IChmYXVsdC0+YWRkciAtIHJhbmdlLnN0YXJ0KSA+PiBQ QUdFX1NISUZUOworCQkJcGkgPSAoZmF1bHQtPmFkZHIgLSBhcmdzLmkucC5hZGRyKSA+PiBQQUdF X1NISUZUOwogCQkJaWYgKHJldCB8fAotCQkJICAgICAhKHJhbmdlLnBmbnNbcGldICYgTlZJRl9W TU1fUEZOTUFQX1YwX1YpIHx8Ci0JCQkgICAgKCEocmFuZ2UucGZuc1twaV0gJiBOVklGX1ZNTV9Q Rk5NQVBfVjBfVykgJiYKKwkJCSAgICAgIShhcmdzLnBoeXNbcGldICYgTlZJRl9WTU1fUEZOTUFQ X1YwX1YpIHx8CisJCQkgICAgKCEoYXJncy5waHlzW3BpXSAmIE5WSUZfVk1NX1BGTk1BUF9WMF9X KSAmJgogCQkJICAgICBmYXVsdC0+YWNjZXNzICE9IDAgJiYgZmF1bHQtPmFjY2VzcyAhPSAzKSkg ewogCQkJCW5vdXZlYXVfc3ZtX2ZhdWx0X2NhbmNlbF9mYXVsdChzdm0sIGZhdWx0KTsKIAkJCQlj b250aW51ZTsKLS0gCjIuMjMuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnBy b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94 ZW4tZGV2ZWw= 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 27A0CCA9EC1 for ; Mon, 28 Oct 2019 21:08:24 +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 05767217D6 for ; Mon, 28 Oct 2019 21:08:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 05767217D6 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 6D4866EA78; Mon, 28 Oct 2019 21:08:01 +0000 (UTC) Received: from mail-qk1-x743.google.com (mail-qk1-x743.google.com [IPv6:2607:f8b0:4864:20::743]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5CCA489CBC for ; Mon, 28 Oct 2019 20:10:51 +0000 (UTC) Received: by mail-qk1-x743.google.com with SMTP id e66so9751594qkf.13 for ; Mon, 28 Oct 2019 13:10:51 -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=PQZNLb2n/VZGpEmak/Qy43FMq9i6D/cb88Nb6FZ4HCc=; b=sI2mlUnCmjJn4984er3pZ5qdGr/4hhuGJEJuC+VE0G5npPerdRk7aSXQWeulAk3YtE 2wOPrI1V6LjHvvVUCkbd8b/vnq4YXvI5Di2udepU9EZSV1BlxXqo1Va0JG9uM9tncn// 7FyF3GOcic9GElPVF67wtQGNLt6vkrDmAuaKfA1w8ZNTgAgRLym3zFTpzJZ51jeIwLGI x15Sxj5SRkr0TLJGpci0PvkPhUAqKI2H9iEtjitIxV3DZs2cmljbyViXIYIXCXaI0QzX dtVW5Yw12rwa+H7kQWtQHolMiNXMoIHvGXPob2xj88wDPvGY4vWsG0TxqJLVfCAUKN+C nQsA== X-Gm-Message-State: APjAAAXwVV58T83po1MGJiCQvpGPAqbKLGXA2dVViuYUJY0akr7jwrA3 jqBAG8UJMqdVgVwnbrcyeDrglA== X-Google-Smtp-Source: APXvYqzMU7VQvTju2rb3w6e+2fL+RjV7hRaY2VBwnJrbzaMQL58Q1wBtGQ3o/J/TSiYTcAN3ImKl5A== X-Received: by 2002:a37:6643:: with SMTP id a64mr18555491qkc.144.1572293450333; Mon, 28 Oct 2019 13:10:50 -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 u9sm1501115qke.50.2019.10.28.13.10.43 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 28 Oct 2019 13:10:46 -0700 (PDT) Received: from jgg by mlx.ziepe.ca with local (Exim 4.90_1) (envelope-from ) id 1iPBLf-0001h3-HR; 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 11/15] nouveau: use mmu_range_notifier instead of hmm_mirror Date: Mon, 28 Oct 2019 17:10:28 -0300 Message-Id: <20191028201032.6352-12-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=PQZNLb2n/VZGpEmak/Qy43FMq9i6D/cb88Nb6FZ4HCc=; b=JDfbNHty1ny9u0tolzz+R0bxyhO0ollb7F5vPylbs5XjRPew3ElqUgkRpnO1KqyNHJ lbmxT+WbuV2iqQKttXAinvJg6mLlpZOBkINKsbyZqgOCdsmgbxz+ymyca8lTAo2EIudp RdrM54tOjIVl+x7WKO8GaCpeaojoHs5YLsjcx7foxAOaiA94okZYV8o6vQfQCwuPbxr0 yggvPWtLeAKJS+9waHFzTuYqiUemPetepD5ewVTHRTeKTa3PYZPmq7T889b0g2RSfWRi iL7jN1WDPg49bHl8qlfraAoRYGBU7o23Ymndp/Dt+umlDMRAc3zH7TPYUwjq23HTYvtx Z/OQ== 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: <20191028201028.Ir_matwH-6PifJPq91rCwdO9JgWOOnL6UuFKOZHTCKU@z> RnJvbTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgoKUmVtb3ZlIHRoZSBobW1f bWlycm9yIG9iamVjdCBhbmQgdXNlIHRoZSBtbXVfcmFuZ2Vfbm90aWZpZXIgQVBJIGluc3RlYWQK Zm9yIHRoZSByYW5nZSwgYW5kIHVzZSB0aGUgbm9ybWFsIG1tdV9ub3RpZmllciBBUEkgZm9yIHRo ZSBnZW5lcmFsCmludmFsaWRhdGlvbiBjYWxsYmFjay4KCldoaWxlIGhlcmUgcmUtb3JnYW5pemUg dGhlIHBhZ2VmYXVsdCBwYXRoIHNvIHRoZSBsb2NraW5nIHBhdHRlcm4gaXMgY2xlYXIuCgpub3V2 ZWF1IGlzIHRoZSBvbmx5IGRyaXZlciB0aGF0IHVzZXMgYSB0ZW1wb3JhcnkgcmFuZ2Ugb2JqZWN0 IGFuZCBpbnN0ZWFkCmZvcndhcmRzIG5lYXJseSBldmVyeSBpbnZhbGlkYXRpb24gcmFuZ2UgZGly ZWN0bHkgdG8gdGhlIEhXLiBXaGlsZSB0aGlzIGlzCm5vdCBob3cgdGhlIG1tdV9yYW5nZV9ub3Rp ZmllciB3YXMgaW50ZW5kZWQgdG8gYmUgdXNlZCwgdGhlIG92ZXJoZWFkcyBvbgp0aGUgcGFnZWZh dWx0aW5nIHBhdGggYXJlIHNpbWlsYXIgdG8gdGhlIGV4aXN0aW5nIGhtbV9taXJyb3IgdmVyc2lv bi4KUGFydGljdWxhcmx5IHNpbmNlIHRoZSBpbnRlcnZhbCB0cmVlIHdpbGwgYmUgc21hbGwuCgpD YzogQmVuIFNrZWdncyA8YnNrZWdnc0ByZWRoYXQuY29tPgpDYzogZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpDYzogbm91dmVhdUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKQ2M6IFJhbHBo IENhbXBiZWxsIDxyY2FtcGJlbGxAbnZpZGlhLmNvbT4KU2lnbmVkLW9mZi1ieTogSmFzb24gR3Vu dGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25v dXZlYXVfc3ZtLmMgfCAxODAgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgODAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2 ZWF1L25vdXZlYXVfc3ZtLmMKaW5kZXggNTc3Zjg4MTE5MjVhNTkuLmYyNzMxN2ZiZTM2ZjQ1IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmMKQEAgLTk2LDggKzk2LDYgQEAgc3Ry dWN0IG5vdXZlYXVfc3ZtbSB7CiAJfSB1bm1hbmFnZWQ7CiAKIAlzdHJ1Y3QgbXV0ZXggbXV0ZXg7 Ci0KLQlzdHJ1Y3QgaG1tX21pcnJvciBtaXJyb3I7CiB9OwogCiAjZGVmaW5lIFNWTU1fREJHKHMs ZixhLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXApAQCAtMjkzLDIzICsyOTEsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZp ZXJfb3BzIG5vdXZlYXVfbW5fb3BzID0gewogCS5mcmVlX25vdGlmaWVyID0gbm91dmVhdV9zdm1t X2ZyZWVfbm90aWZpZXIsCiB9OwogCi1zdGF0aWMgaW50Ci1ub3V2ZWF1X3N2bW1fc3luY19jcHVf ZGV2aWNlX3BhZ2V0YWJsZXMoc3RydWN0IGhtbV9taXJyb3IgKm1pcnJvciwKLQkJCQkJY29uc3Qg c3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqdXBkYXRlKQotewotCXJldHVybiAwOwotfQotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGhtbV9taXJyb3Jfb3BzIG5vdXZlYXVfc3ZtbSA9IHsKLQkuc3lu Y19jcHVfZGV2aWNlX3BhZ2V0YWJsZXMgPSBub3V2ZWF1X3N2bW1fc3luY19jcHVfZGV2aWNlX3Bh Z2V0YWJsZXMsCi19OwotCiB2b2lkCiBub3V2ZWF1X3N2bW1fZmluaShzdHJ1Y3Qgbm91dmVhdV9z dm1tICoqcHN2bW0pCiB7CiAJc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSA9ICpwc3ZtbTsKIAlp ZiAoc3ZtbSkgewotCQlobW1fbWlycm9yX3VucmVnaXN0ZXIoJnN2bW0tPm1pcnJvcik7CiAJCW11 dGV4X2xvY2soJnN2bW0tPm11dGV4KTsKIAkJc3ZtbS0+dm1tID0gTlVMTDsKIAkJbXV0ZXhfdW5s b2NrKCZzdm1tLT5tdXRleCk7CkBAIC0zNTcsMTUgKzM0MywxMCBAQCBub3V2ZWF1X3N2bW1faW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQlnb3RvIG91dF9mcmVlOwog CiAJZG93bl93cml0ZSgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKLQlzdm1tLT5taXJyb3Iub3Bz ID0gJm5vdXZlYXVfc3ZtbTsKLQlyZXQgPSBobW1fbWlycm9yX3JlZ2lzdGVyKCZzdm1tLT5taXJy b3IsIGN1cnJlbnQtPm1tKTsKLQlpZiAocmV0KQotCQlnb3RvIG91dF9tbV91bmxvY2s7Ci0KIAlz dm1tLT5ub3RpZmllci5vcHMgPSAmbm91dmVhdV9tbl9vcHM7CiAJcmV0ID0gX19tbXVfbm90aWZp ZXJfcmVnaXN0ZXIoJnN2bW0tPm5vdGlmaWVyLCBjdXJyZW50LT5tbSk7CiAJaWYgKHJldCkKLQkJ Z290byBvdXRfaG1tX3VucmVnaXN0ZXI7CisJCWdvdG8gb3V0X21tX3VubG9jazsKIAkvKiBOb3Rl LCBvd25lcnNoaXAgb2Ygc3ZtbSB0cmFuc2ZlcnMgdG8gbW11X25vdGlmaWVyICovCiAKIAljbGkt PnN2bS5zdm1tID0gc3ZtbTsKQEAgLTM3NCw4ICszNTUsNiBAQCBub3V2ZWF1X3N2bW1faW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCW11dGV4X3VubG9jaygmY2xpLT5t dXRleCk7CiAJcmV0dXJuIDA7CiAKLW91dF9obW1fdW5yZWdpc3RlcjoKLQlobW1fbWlycm9yX3Vu cmVnaXN0ZXIoJnN2bW0tPm1pcnJvcik7CiBvdXRfbW1fdW5sb2NrOgogCXVwX3dyaXRlKCZjdXJy ZW50LT5tbS0+bW1hcF9zZW0pOwogb3V0X2ZyZWU6CkBAIC01MDMsNDMgKzQ4Miw5MSBAQCBub3V2 ZWF1X3N2bV9mYXVsdF9jYWNoZShzdHJ1Y3Qgbm91dmVhdV9zdm0gKnN2bSwKIAkJZmF1bHQtPmlu c3QsIGZhdWx0LT5hZGRyLCBmYXVsdC0+YWNjZXNzKTsKIH0KIAotc3RhdGljIGlubGluZSBib29s Ci1ub3V2ZWF1X3JhbmdlX2RvbmUoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UpCitzdHJ1Y3Qgc3Zt X25vdGlmaWVyIHsKKwlzdHJ1Y3QgbW11X3JhbmdlX25vdGlmaWVyIG5vdGlmaWVyOworCXN0cnVj dCBub3V2ZWF1X3N2bW0gKnN2bW07Cit9OworCitzdGF0aWMgYm9vbCBub3V2ZWF1X3N2bV9yYW5n ZV9pbnZhbGlkYXRlKHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZpZXIgKm1ybiwKKwkJCQkJIGNvbnN0 IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlLAorCQkJCQkgdW5zaWduZWQgbG9uZyBj dXJfc2VxKQogewotCWJvb2wgcmV0ID0gaG1tX3JhbmdlX3ZhbGlkKHJhbmdlKTsKKwlzdHJ1Y3Qg c3ZtX25vdGlmaWVyICpzbiA9CisJCWNvbnRhaW5lcl9vZihtcm4sIHN0cnVjdCBzdm1fbm90aWZp ZXIsIG5vdGlmaWVyKTsKIAotCWhtbV9yYW5nZV91bnJlZ2lzdGVyKHJhbmdlKTsKLQlyZXR1cm4g cmV0OworCS8qCisJICogc2VyaWFsaXplcyB0aGUgdXBkYXRlIHRvIG1ybi0+aW52YWxpZGF0ZV9z ZXEgZG9uZSBieSBjYWxsZXIgYW5kCisJICogcHJldmVudHMgaW52YWxpZGF0aW9uIG9mIHRoZSBQ VEUgZnJvbSBwcm9ncmVzc2luZyB3aGlsZSBIVyBpcyBiZWluZworCSAqIHByb2dyYW1tZWQuIFRo aXMgaXMgdmVyeSBoYWNreSBhbmQgb25seSB3b3JrcyBiZWNhdXNlIHRoZSBub3JtYWwKKwkgKiBu b3RpZmllciB0aGF0IGRvZXMgaW52YWxpZGF0aW9uIGlzIGFsd2F5cyBjYWxsZWQgYWZ0ZXIgdGhl IHJhbmdlCisJICogbm90aWZpZXIuCisJICovCisJaWYgKG1tdV9ub3RpZmllcl9yYW5nZV9ibG9j a2FibGUocmFuZ2UpKQorCQltdXRleF9sb2NrKCZzbi0+c3ZtbS0+bXV0ZXgpOworCWVsc2UgaWYg KCFtdXRleF90cnlsb2NrKCZzbi0+c3ZtbS0+bXV0ZXgpKQorCQlyZXR1cm4gZmFsc2U7CisJbW11 X3JhbmdlX3NldF9zZXEobXJuLCBjdXJfc2VxKTsKKwltdXRleF91bmxvY2soJnNuLT5zdm1tLT5t dXRleCk7CisJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbnQKLW5vdXZlYXVfcmFuZ2VfZmF1 bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSwgc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UpCitz dGF0aWMgY29uc3Qgc3RydWN0IG1tdV9yYW5nZV9ub3RpZmllcl9vcHMgbm91dmVhdV9zdm1fbXJu X29wcyA9IHsKKwkuaW52YWxpZGF0ZSA9IG5vdXZlYXVfc3ZtX3JhbmdlX2ludmFsaWRhdGUsCit9 OworCitzdGF0aWMgaW50IG5vdXZlYXVfcmFuZ2VfZmF1bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAq c3ZtbSwKKwkJCSAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSwgdm9pZCAqZGF0YSwgdTMy IHNpemUsCisJCQkgICAgICAgdTY0ICpwZm5zLAorCQkJICAgICAgIHN0cnVjdCBzdm1fbm90aWZp ZXIgKm5vdGlmaWVyKQogeworCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9CisJCWppZmZpZXMgKyBt c2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpOworCS8qIEhhdmUgSE1N IGZhdWx0IHBhZ2VzIHdpdGhpbiB0aGUgZmF1bHQgd2luZG93IHRvIHRoZSBHUFUuICovCisJc3Ry dWN0IGhtbV9yYW5nZSByYW5nZSA9IHsKKwkJLm5vdGlmaWVyID0gJm5vdGlmaWVyLT5ub3RpZmll ciwKKwkJLnN0YXJ0ID0gbm90aWZpZXItPm5vdGlmaWVyLmludGVydmFsX3RyZWUuc3RhcnQsCisJ CS5lbmQgPSBub3RpZmllci0+bm90aWZpZXIuaW50ZXJ2YWxfdHJlZS5sYXN0ICsgMSwKKwkJLnBm bnMgPSBwZm5zLAorCQkuZmxhZ3MgPSBub3V2ZWF1X3N2bV9wZm5fZmxhZ3MsCisJCS52YWx1ZXMg PSBub3V2ZWF1X3N2bV9wZm5fdmFsdWVzLAorCQkucGZuX3NoaWZ0ID0gTlZJRl9WTU1fUEZOTUFQ X1YwX0FERFJfU0hJRlQsCisJfTsKKwlzdHJ1Y3QgbW1fc3RydWN0ICptbSA9IG5vdGlmaWVyLT5u b3RpZmllci5tbTsKIAlsb25nIHJldDsKIAotCXJhbmdlLT5kZWZhdWx0X2ZsYWdzID0gMDsKLQly YW5nZS0+cGZuX2ZsYWdzX21hc2sgPSAtMVVMOworCXdoaWxlICh0cnVlKSB7CisJCWlmICh0aW1l X2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKQorCQkJcmV0dXJuIC1FQlVTWTsKIAotCXJldCA9IGht bV9yYW5nZV9yZWdpc3RlcihyYW5nZSwgJnN2bW0tPm1pcnJvcik7Ci0JaWYgKHJldCkgewotCQl1 cF9yZWFkKCZzdm1tLT5ub3RpZmllci5tbS0+bW1hcF9zZW0pOwotCQlyZXR1cm4gKGludClyZXQ7 Ci0JfQorCQlyYW5nZS5ub3RpZmllcl9zZXEgPSBtbXVfcmFuZ2VfcmVhZF9iZWdpbihyYW5nZS5u b3RpZmllcik7CisJCXJhbmdlLmRlZmF1bHRfZmxhZ3MgPSAwOworCQlyYW5nZS5wZm5fZmxhZ3Nf bWFzayA9IC0xVUw7CisJCWRvd25fcmVhZCgmbW0tPm1tYXBfc2VtKTsKKwkJcmV0ID0gaG1tX3Jh bmdlX2ZhdWx0KCZyYW5nZSwgMCk7CisJCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7CisJCWlmIChy ZXQgPD0gMCkgeworCQkJaWYgKHJldCA9PSAwIHx8IHJldCA9PSAtRUJVU1kpCisJCQkJY29udGlu dWU7CisJCQlyZXR1cm4gcmV0OworCQl9CiAKLQlpZiAoIWhtbV9yYW5nZV93YWl0X3VudGlsX3Zh bGlkKHJhbmdlLCBITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKSkgewotCQl1cF9yZWFkKCZzdm1t LT5ub3RpZmllci5tbS0+bW1hcF9zZW0pOwotCQlyZXR1cm4gLUVCVVNZOworCQltdXRleF9sb2Nr KCZzdm1tLT5tdXRleCk7CisJCWlmIChtbXVfcmFuZ2VfcmVhZF9yZXRyeShyYW5nZS5ub3RpZmll ciwKKwkJCQkJIHJhbmdlLm5vdGlmaWVyX3NlcSkpIHsKKwkJCW11dGV4X3VubG9jaygmc3ZtbS0+ bXV0ZXgpOworCQkJY29udGludWU7CisJCX0KKwkJYnJlYWs7CiAJfQogCi0JcmV0ID0gaG1tX3Jh bmdlX2ZhdWx0KHJhbmdlLCAwKTsKLQlpZiAocmV0IDw9IDApIHsKLQkJaWYgKHJldCA9PSAwKQot CQkJcmV0ID0gLUVCVVNZOwotCQl1cF9yZWFkKCZzdm1tLT5ub3RpZmllci5tbS0+bW1hcF9zZW0p OwotCQlobW1fcmFuZ2VfdW5yZWdpc3RlcihyYW5nZSk7Ci0JCXJldHVybiByZXQ7Ci0JfQotCXJl dHVybiAwOworCW5vdXZlYXVfZG1lbV9jb252ZXJ0X3Bmbihkcm0sICZyYW5nZSk7CisKKwlzdm1t LT52bW0tPnZtbS5vYmplY3QuY2xpZW50LT5zdXBlciA9IHRydWU7CisJcmV0ID0gbnZpZl9vYmpl Y3RfaW9jdGwoJnN2bW0tPnZtbS0+dm1tLm9iamVjdCwgZGF0YSwgc2l6ZSwgTlVMTCk7CisJc3Zt bS0+dm1tLT52bW0ub2JqZWN0LmNsaWVudC0+c3VwZXIgPSBmYWxzZTsKKwltdXRleF91bmxvY2so JnN2bW0tPm11dGV4KTsKKworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTU1OSw3 ICs1ODYsNiBAQCBub3V2ZWF1X3N2bV9mYXVsdChzdHJ1Y3QgbnZpZl9ub3RpZnkgKm5vdGlmeSkK IAkJfSBpOwogCQl1NjQgcGh5c1sxNl07CiAJfSBhcmdzOwotCXN0cnVjdCBobW1fcmFuZ2UgcmFu Z2U7CiAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7CiAJdTY0IGluc3QsIHN0YXJ0LCBsaW1p dDsKIAlpbnQgZmksIGZuLCBwaSwgZmlsbDsKQEAgLTYxNSw2ICs2NDEsNyBAQCBub3V2ZWF1X3N2 bV9mYXVsdChzdHJ1Y3QgbnZpZl9ub3RpZnkgKm5vdGlmeSkKIAlhcmdzLmkucC52ZXJzaW9uID0g MDsKIAogCWZvciAoZmkgPSAwOyBmbiA9IGZpICsgMSwgZmkgPCBidWZmZXItPmZhdWx0X25yOyBm aSA9IGZuKSB7CisJCXN0cnVjdCBzdm1fbm90aWZpZXIgbm90aWZpZXI7CiAJCXN0cnVjdCBtbV9z dHJ1Y3QgKm1tOwogCiAJCS8qIENhbmNlbCBhbnkgZmF1bHRzIGZyb20gbm9uLVNWTSBjaGFubmVs cy4gKi8KQEAgLTYyMyw3ICs2NTAsNiBAQCBub3V2ZWF1X3N2bV9mYXVsdChzdHJ1Y3QgbnZpZl9u b3RpZnkgKm5vdGlmeSkKIAkJCWNvbnRpbnVlOwogCQl9CiAJCVNWTU1fREJHKHN2bW0sICJhZGRy ICUwMTZsbHgiLCBidWZmZXItPmZhdWx0W2ZpXS0+YWRkcik7Ci0JCW1tID0gc3ZtbS0+bm90aWZp ZXIubW07CiAKIAkJLyogV2UgdHJ5IGFuZCBncm91cCBoYW5kbGluZyBvZiBmYXVsdHMgd2l0aGlu IGEgc21hbGwKIAkJICogd2luZG93IGludG8gYSBzaW5nbGUgdXBkYXRlLgpAQCAtNjM3LDYgKzY2 MywxMiBAQCBub3V2ZWF1X3N2bV9mYXVsdChzdHJ1Y3QgbnZpZl9ub3RpZnkgKm5vdGlmeSkKIAkJ CXN0YXJ0ID0gbWF4X3QodTY0LCBzdGFydCwgc3ZtbS0+dW5tYW5hZ2VkLmxpbWl0KTsKIAkJU1ZN TV9EQkcoc3ZtbSwgInduZHcgJTAxNmxseC0lMDE2bGx4Iiwgc3RhcnQsIGxpbWl0KTsKIAorCQlt bSA9IHN2bW0tPm5vdGlmaWVyLm1tOworCQlpZiAoIW1tZ2V0X25vdF96ZXJvKG1tKSkgeworCQkJ bm91dmVhdV9zdm1fZmF1bHRfY2FuY2VsX2ZhdWx0KHN2bSwgYnVmZmVyLT5mYXVsdFtmaV0pOwor CQkJY29udGludWU7CisJCX0KKwogCQkvKiBJbnRlcnNlY3QgZmF1bHQgd2luZG93IHdpdGggdGhl IENQVSBWTUEsIGNhbmNlbGxpbmcKIAkJICogdGhlIGZhdWx0IGlmIHRoZSBhZGRyZXNzIGlzIGlu dmFsaWQuCiAJCSAqLwpAQCAtNjQ1LDE2ICs2NzcsMTggQEAgbm91dmVhdV9zdm1fZmF1bHQoc3Ry dWN0IG52aWZfbm90aWZ5ICpub3RpZnkpCiAJCWlmICghdm1hKSB7CiAJCQlTVk1NX0VSUihzdm1t LCAid25kdyAlMDE2bGx4LSUwMTZsbHgiLCBzdGFydCwgbGltaXQpOwogCQkJdXBfcmVhZCgmbW0t Pm1tYXBfc2VtKTsKKwkJCW1tcHV0KG1tKTsKIAkJCW5vdXZlYXVfc3ZtX2ZhdWx0X2NhbmNlbF9m YXVsdChzdm0sIGJ1ZmZlci0+ZmF1bHRbZmldKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCXN0YXJ0 ID0gbWF4X3QodTY0LCBzdGFydCwgdm1hLT52bV9zdGFydCk7CiAJCWxpbWl0ID0gbWluX3QodTY0 LCBsaW1pdCwgdm1hLT52bV9lbmQpOworCQl1cF9yZWFkKCZtbS0+bW1hcF9zZW0pOwogCQlTVk1N X0RCRyhzdm1tLCAid25kdyAlMDE2bGx4LSUwMTZsbHgiLCBzdGFydCwgbGltaXQpOwogCiAJCWlm IChidWZmZXItPmZhdWx0W2ZpXS0+YWRkciAhPSBzdGFydCkgewogCQkJU1ZNTV9FUlIoc3ZtbSwg ImFkZHIgJTAxNmxseCIsIGJ1ZmZlci0+ZmF1bHRbZmldLT5hZGRyKTsKLQkJCXVwX3JlYWQoJm1t LT5tbWFwX3NlbSk7CisJCQltbXB1dChtbSk7CiAJCQlub3V2ZWF1X3N2bV9mYXVsdF9jYW5jZWxf ZmF1bHQoc3ZtLCBidWZmZXItPmZhdWx0W2ZpXSk7CiAJCQljb250aW51ZTsKIAkJfQpAQCAtNzEw LDMzICs3NDQsMTkgQEAgbm91dmVhdV9zdm1fZmF1bHQoc3RydWN0IG52aWZfbm90aWZ5ICpub3Rp ZnkpCiAJCQkgYXJncy5pLnAuYWRkciwKIAkJCSBhcmdzLmkucC5hZGRyICsgYXJncy5pLnAuc2l6 ZSwgZm4gLSBmaSk7CiAKLQkJLyogSGF2ZSBITU0gZmF1bHQgcGFnZXMgd2l0aGluIHRoZSBmYXVs dCB3aW5kb3cgdG8gdGhlIEdQVS4gKi8KLQkJcmFuZ2Uuc3RhcnQgPSBhcmdzLmkucC5hZGRyOwot CQlyYW5nZS5lbmQgPSBhcmdzLmkucC5hZGRyICsgYXJncy5pLnAuc2l6ZTsKLQkJcmFuZ2UucGZu cyA9IGFyZ3MucGh5czsKLQkJcmFuZ2UuZmxhZ3MgPSBub3V2ZWF1X3N2bV9wZm5fZmxhZ3M7Ci0J CXJhbmdlLnZhbHVlcyA9IG5vdXZlYXVfc3ZtX3Bmbl92YWx1ZXM7Ci0JCXJhbmdlLnBmbl9zaGlm dCA9IE5WSUZfVk1NX1BGTk1BUF9WMF9BRERSX1NISUZUOwotYWdhaW46Ci0JCXJldCA9IG5vdXZl YXVfcmFuZ2VfZmF1bHQoc3ZtbSwgJnJhbmdlKTsKLQkJaWYgKHJldCA9PSAwKSB7Ci0JCQltdXRl eF9sb2NrKCZzdm1tLT5tdXRleCk7Ci0JCQlpZiAoIW5vdXZlYXVfcmFuZ2VfZG9uZSgmcmFuZ2Up KSB7Ci0JCQkJbXV0ZXhfdW5sb2NrKCZzdm1tLT5tdXRleCk7Ci0JCQkJZ290byBhZ2FpbjsKLQkJ CX0KLQotCQkJbm91dmVhdV9kbWVtX2NvbnZlcnRfcGZuKHN2bS0+ZHJtLCAmcmFuZ2UpOwotCi0J CQlzdm1tLT52bW0tPnZtbS5vYmplY3QuY2xpZW50LT5zdXBlciA9IHRydWU7Ci0JCQlyZXQgPSBu dmlmX29iamVjdF9pb2N0bCgmc3ZtbS0+dm1tLT52bW0ub2JqZWN0LAotCQkJCQkJJmFyZ3MsIHNp emVvZihhcmdzLmkpICsKLQkJCQkJCXBpICogc2l6ZW9mKGFyZ3MucGh5c1swXSksCi0JCQkJCQlO VUxMKTsKLQkJCXN2bW0tPnZtbS0+dm1tLm9iamVjdC5jbGllbnQtPnN1cGVyID0gZmFsc2U7Ci0J CQltdXRleF91bmxvY2soJnN2bW0tPm11dGV4KTsKLQkJCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7 CisJCW5vdGlmaWVyLnN2bW0gPSBzdm1tOworCQlub3RpZmllci5ub3RpZmllci5vcHMgPSAmbm91 dmVhdV9zdm1fbXJuX29wczsKKwkJcmV0ID0gbW11X3JhbmdlX25vdGlmaWVyX2luc2VydCgmbm90 aWZpZXIubm90aWZpZXIsCisJCQkJCQlhcmdzLmkucC5hZGRyLCBhcmdzLmkucC5zaXplLAorCQkJ CQkJc3ZtbS0+bm90aWZpZXIubW0pOworCQlpZiAoIXJldCkgeworCQkJcmV0ID0gbm91dmVhdV9y YW5nZV9mYXVsdCgKKwkJCQlzdm1tLCBzdm0tPmRybSwgJmFyZ3MsCisJCQkJc2l6ZW9mKGFyZ3Mu aSkgKyBwaSAqIHNpemVvZihhcmdzLnBoeXNbMF0pLAorCQkJCWFyZ3MucGh5cywgJm5vdGlmaWVy KTsKKwkJCW1tdV9yYW5nZV9ub3RpZmllcl9yZW1vdmUoJm5vdGlmaWVyLm5vdGlmaWVyKTsKIAkJ fQorCQltbXB1dChtbSk7CiAKIAkJLyogQ2FuY2VsIGFueSBmYXVsdHMgaW4gdGhlIHdpbmRvdyB3 aG9zZSBwYWdlcyBkaWRuJ3QgbWFuYWdlCiAJCSAqIHRvIGtlZXAgdGhlaXIgdmFsaWQgYml0LCBv ciBzdGF5IHdyaXRlYWJsZSB3aGVuIHJlcXVpcmVkLgpAQCAtNzQ1LDEwICs3NjUsMTAgQEAgbm91 dmVhdV9zdm1fZmF1bHQoc3RydWN0IG52aWZfbm90aWZ5ICpub3RpZnkpCiAJCSAqLwogCQl3aGls ZSAoZmkgPCBmbikgewogCQkJc3RydWN0IG5vdXZlYXVfc3ZtX2ZhdWx0ICpmYXVsdCA9IGJ1ZmZl ci0+ZmF1bHRbZmkrK107Ci0JCQlwaSA9IChmYXVsdC0+YWRkciAtIHJhbmdlLnN0YXJ0KSA+PiBQ QUdFX1NISUZUOworCQkJcGkgPSAoZmF1bHQtPmFkZHIgLSBhcmdzLmkucC5hZGRyKSA+PiBQQUdF X1NISUZUOwogCQkJaWYgKHJldCB8fAotCQkJICAgICAhKHJhbmdlLnBmbnNbcGldICYgTlZJRl9W TU1fUEZOTUFQX1YwX1YpIHx8Ci0JCQkgICAgKCEocmFuZ2UucGZuc1twaV0gJiBOVklGX1ZNTV9Q Rk5NQVBfVjBfVykgJiYKKwkJCSAgICAgIShhcmdzLnBoeXNbcGldICYgTlZJRl9WTU1fUEZOTUFQ X1YwX1YpIHx8CisJCQkgICAgKCEoYXJncy5waHlzW3BpXSAmIE5WSUZfVk1NX1BGTk1BUF9WMF9X KSAmJgogCQkJICAgICBmYXVsdC0+YWNjZXNzICE9IDAgJiYgZmF1bHQtPmFjY2VzcyAhPSAzKSkg ewogCQkJCW5vdXZlYXVfc3ZtX2ZhdWx0X2NhbmNlbF9mYXVsdChzdm0sIGZhdWx0KTsKIAkJCQlj b250aW51ZTsKLS0gCjIuMjMuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVs 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 A87A2CA9EC0 for ; Mon, 28 Oct 2019 20:12:04 +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 72A73208C0 for ; Mon, 28 Oct 2019 20:12:04 +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="JDfbNHty" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 72A73208C0 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 1iPBMh-0001wr-JJ; Mon, 28 Oct 2019 20:11:47 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iPBMf-0001va-Or for xen-devel@lists.xenproject.org; Mon, 28 Oct 2019 20:11:45 +0000 X-Inumbo-ID: 09a03874-f9bf-11e9-a531-bc764e2007e4 Received: from mail-qk1-x741.google.com (unknown [2607:f8b0:4864:20::741]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 09a03874-f9bf-11e9-a531-bc764e2007e4; Mon, 28 Oct 2019 20:10:50 +0000 (UTC) Received: by mail-qk1-x741.google.com with SMTP id y81so9744857qkb.7 for ; Mon, 28 Oct 2019 13:10:50 -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=PQZNLb2n/VZGpEmak/Qy43FMq9i6D/cb88Nb6FZ4HCc=; b=JDfbNHty1ny9u0tolzz+R0bxyhO0ollb7F5vPylbs5XjRPew3ElqUgkRpnO1KqyNHJ lbmxT+WbuV2iqQKttXAinvJg6mLlpZOBkINKsbyZqgOCdsmgbxz+ymyca8lTAo2EIudp RdrM54tOjIVl+x7WKO8GaCpeaojoHs5YLsjcx7foxAOaiA94okZYV8o6vQfQCwuPbxr0 yggvPWtLeAKJS+9waHFzTuYqiUemPetepD5ewVTHRTeKTa3PYZPmq7T889b0g2RSfWRi iL7jN1WDPg49bHl8qlfraAoRYGBU7o23Ymndp/Dt+umlDMRAc3zH7TPYUwjq23HTYvtx Z/OQ== 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=PQZNLb2n/VZGpEmak/Qy43FMq9i6D/cb88Nb6FZ4HCc=; b=P25bcr30HvILWKJlRCjw/0NtSClRFopptB0FWcP5bKzzChP59ed2Xi499HMbUIAYYN bl2FZVF2wAkgIxBpXzZ4+Tpkz2Kclmehg9a1p3ukMHJI5xGHiT6hGI67iAsCAPvedkWh zWm9Ump7rh47TmHO0syVDiSDsvGgSWn0PMHzN1GVpsu2+oTO5T7CUVweAq7yxcdoOAp7 SXlc8HzcBlJCzDACOy6IlgmCtm3GO6XejfsXwQzqnhWWIaAYEKGGQmv1RrtxhMs/mcc0 iekMkqBFPC7piqrHxQI2eRFVcy+Ad9wy7jrEzjW1ybuOrvIK+Zn5pPIsShy16yigZYlk zuvQ== X-Gm-Message-State: APjAAAUB7MZ3oPlfYkBVltZMVsjU0te6fG7iXShwoqNJU2aXF4X//C3j k5QFM4uMx4oYMx14udpFD8qAKZRvYgY= X-Google-Smtp-Source: APXvYqzMU7VQvTju2rb3w6e+2fL+RjV7hRaY2VBwnJrbzaMQL58Q1wBtGQ3o/J/TSiYTcAN3ImKl5A== X-Received: by 2002:a37:6643:: with SMTP id a64mr18555491qkc.144.1572293450333; Mon, 28 Oct 2019 13:10:50 -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 u9sm1501115qke.50.2019.10.28.13.10.43 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 28 Oct 2019 13:10:46 -0700 (PDT) Received: from jgg by mlx.ziepe.ca with local (Exim 4.90_1) (envelope-from ) id 1iPBLf-0001h3-HR; 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:28 -0300 Message-Id: <20191028201032.6352-12-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 11/15] nouveau: use mmu_range_notifier instead of hmm_mirror 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" RnJvbTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgoKUmVtb3ZlIHRoZSBobW1f bWlycm9yIG9iamVjdCBhbmQgdXNlIHRoZSBtbXVfcmFuZ2Vfbm90aWZpZXIgQVBJIGluc3RlYWQK Zm9yIHRoZSByYW5nZSwgYW5kIHVzZSB0aGUgbm9ybWFsIG1tdV9ub3RpZmllciBBUEkgZm9yIHRo ZSBnZW5lcmFsCmludmFsaWRhdGlvbiBjYWxsYmFjay4KCldoaWxlIGhlcmUgcmUtb3JnYW5pemUg dGhlIHBhZ2VmYXVsdCBwYXRoIHNvIHRoZSBsb2NraW5nIHBhdHRlcm4gaXMgY2xlYXIuCgpub3V2 ZWF1IGlzIHRoZSBvbmx5IGRyaXZlciB0aGF0IHVzZXMgYSB0ZW1wb3JhcnkgcmFuZ2Ugb2JqZWN0 IGFuZCBpbnN0ZWFkCmZvcndhcmRzIG5lYXJseSBldmVyeSBpbnZhbGlkYXRpb24gcmFuZ2UgZGly ZWN0bHkgdG8gdGhlIEhXLiBXaGlsZSB0aGlzIGlzCm5vdCBob3cgdGhlIG1tdV9yYW5nZV9ub3Rp ZmllciB3YXMgaW50ZW5kZWQgdG8gYmUgdXNlZCwgdGhlIG92ZXJoZWFkcyBvbgp0aGUgcGFnZWZh dWx0aW5nIHBhdGggYXJlIHNpbWlsYXIgdG8gdGhlIGV4aXN0aW5nIGhtbV9taXJyb3IgdmVyc2lv bi4KUGFydGljdWxhcmx5IHNpbmNlIHRoZSBpbnRlcnZhbCB0cmVlIHdpbGwgYmUgc21hbGwuCgpD YzogQmVuIFNrZWdncyA8YnNrZWdnc0ByZWRoYXQuY29tPgpDYzogZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpDYzogbm91dmVhdUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKQ2M6IFJhbHBo IENhbXBiZWxsIDxyY2FtcGJlbGxAbnZpZGlhLmNvbT4KU2lnbmVkLW9mZi1ieTogSmFzb24gR3Vu dGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25v dXZlYXVfc3ZtLmMgfCAxODAgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgODAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2 ZWF1L25vdXZlYXVfc3ZtLmMKaW5kZXggNTc3Zjg4MTE5MjVhNTkuLmYyNzMxN2ZiZTM2ZjQ1IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmMKQEAgLTk2LDggKzk2LDYgQEAgc3Ry dWN0IG5vdXZlYXVfc3ZtbSB7CiAJfSB1bm1hbmFnZWQ7CiAKIAlzdHJ1Y3QgbXV0ZXggbXV0ZXg7 Ci0KLQlzdHJ1Y3QgaG1tX21pcnJvciBtaXJyb3I7CiB9OwogCiAjZGVmaW5lIFNWTU1fREJHKHMs ZixhLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXApAQCAtMjkzLDIzICsyOTEsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZp ZXJfb3BzIG5vdXZlYXVfbW5fb3BzID0gewogCS5mcmVlX25vdGlmaWVyID0gbm91dmVhdV9zdm1t X2ZyZWVfbm90aWZpZXIsCiB9OwogCi1zdGF0aWMgaW50Ci1ub3V2ZWF1X3N2bW1fc3luY19jcHVf ZGV2aWNlX3BhZ2V0YWJsZXMoc3RydWN0IGhtbV9taXJyb3IgKm1pcnJvciwKLQkJCQkJY29uc3Qg c3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqdXBkYXRlKQotewotCXJldHVybiAwOwotfQotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGhtbV9taXJyb3Jfb3BzIG5vdXZlYXVfc3ZtbSA9IHsKLQkuc3lu Y19jcHVfZGV2aWNlX3BhZ2V0YWJsZXMgPSBub3V2ZWF1X3N2bW1fc3luY19jcHVfZGV2aWNlX3Bh Z2V0YWJsZXMsCi19OwotCiB2b2lkCiBub3V2ZWF1X3N2bW1fZmluaShzdHJ1Y3Qgbm91dmVhdV9z dm1tICoqcHN2bW0pCiB7CiAJc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSA9ICpwc3ZtbTsKIAlp ZiAoc3ZtbSkgewotCQlobW1fbWlycm9yX3VucmVnaXN0ZXIoJnN2bW0tPm1pcnJvcik7CiAJCW11 dGV4X2xvY2soJnN2bW0tPm11dGV4KTsKIAkJc3ZtbS0+dm1tID0gTlVMTDsKIAkJbXV0ZXhfdW5s b2NrKCZzdm1tLT5tdXRleCk7CkBAIC0zNTcsMTUgKzM0MywxMCBAQCBub3V2ZWF1X3N2bW1faW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQlnb3RvIG91dF9mcmVlOwog CiAJZG93bl93cml0ZSgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKLQlzdm1tLT5taXJyb3Iub3Bz ID0gJm5vdXZlYXVfc3ZtbTsKLQlyZXQgPSBobW1fbWlycm9yX3JlZ2lzdGVyKCZzdm1tLT5taXJy b3IsIGN1cnJlbnQtPm1tKTsKLQlpZiAocmV0KQotCQlnb3RvIG91dF9tbV91bmxvY2s7Ci0KIAlz dm1tLT5ub3RpZmllci5vcHMgPSAmbm91dmVhdV9tbl9vcHM7CiAJcmV0ID0gX19tbXVfbm90aWZp ZXJfcmVnaXN0ZXIoJnN2bW0tPm5vdGlmaWVyLCBjdXJyZW50LT5tbSk7CiAJaWYgKHJldCkKLQkJ Z290byBvdXRfaG1tX3VucmVnaXN0ZXI7CisJCWdvdG8gb3V0X21tX3VubG9jazsKIAkvKiBOb3Rl LCBvd25lcnNoaXAgb2Ygc3ZtbSB0cmFuc2ZlcnMgdG8gbW11X25vdGlmaWVyICovCiAKIAljbGkt PnN2bS5zdm1tID0gc3ZtbTsKQEAgLTM3NCw4ICszNTUsNiBAQCBub3V2ZWF1X3N2bW1faW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCW11dGV4X3VubG9jaygmY2xpLT5t dXRleCk7CiAJcmV0dXJuIDA7CiAKLW91dF9obW1fdW5yZWdpc3RlcjoKLQlobW1fbWlycm9yX3Vu cmVnaXN0ZXIoJnN2bW0tPm1pcnJvcik7CiBvdXRfbW1fdW5sb2NrOgogCXVwX3dyaXRlKCZjdXJy ZW50LT5tbS0+bW1hcF9zZW0pOwogb3V0X2ZyZWU6CkBAIC01MDMsNDMgKzQ4Miw5MSBAQCBub3V2 ZWF1X3N2bV9mYXVsdF9jYWNoZShzdHJ1Y3Qgbm91dmVhdV9zdm0gKnN2bSwKIAkJZmF1bHQtPmlu c3QsIGZhdWx0LT5hZGRyLCBmYXVsdC0+YWNjZXNzKTsKIH0KIAotc3RhdGljIGlubGluZSBib29s Ci1ub3V2ZWF1X3JhbmdlX2RvbmUoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UpCitzdHJ1Y3Qgc3Zt X25vdGlmaWVyIHsKKwlzdHJ1Y3QgbW11X3JhbmdlX25vdGlmaWVyIG5vdGlmaWVyOworCXN0cnVj dCBub3V2ZWF1X3N2bW0gKnN2bW07Cit9OworCitzdGF0aWMgYm9vbCBub3V2ZWF1X3N2bV9yYW5n ZV9pbnZhbGlkYXRlKHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZpZXIgKm1ybiwKKwkJCQkJIGNvbnN0 IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlLAorCQkJCQkgdW5zaWduZWQgbG9uZyBj dXJfc2VxKQogewotCWJvb2wgcmV0ID0gaG1tX3JhbmdlX3ZhbGlkKHJhbmdlKTsKKwlzdHJ1Y3Qg c3ZtX25vdGlmaWVyICpzbiA9CisJCWNvbnRhaW5lcl9vZihtcm4sIHN0cnVjdCBzdm1fbm90aWZp ZXIsIG5vdGlmaWVyKTsKIAotCWhtbV9yYW5nZV91bnJlZ2lzdGVyKHJhbmdlKTsKLQlyZXR1cm4g cmV0OworCS8qCisJICogc2VyaWFsaXplcyB0aGUgdXBkYXRlIHRvIG1ybi0+aW52YWxpZGF0ZV9z ZXEgZG9uZSBieSBjYWxsZXIgYW5kCisJICogcHJldmVudHMgaW52YWxpZGF0aW9uIG9mIHRoZSBQ VEUgZnJvbSBwcm9ncmVzc2luZyB3aGlsZSBIVyBpcyBiZWluZworCSAqIHByb2dyYW1tZWQuIFRo aXMgaXMgdmVyeSBoYWNreSBhbmQgb25seSB3b3JrcyBiZWNhdXNlIHRoZSBub3JtYWwKKwkgKiBu b3RpZmllciB0aGF0IGRvZXMgaW52YWxpZGF0aW9uIGlzIGFsd2F5cyBjYWxsZWQgYWZ0ZXIgdGhl IHJhbmdlCisJICogbm90aWZpZXIuCisJICovCisJaWYgKG1tdV9ub3RpZmllcl9yYW5nZV9ibG9j a2FibGUocmFuZ2UpKQorCQltdXRleF9sb2NrKCZzbi0+c3ZtbS0+bXV0ZXgpOworCWVsc2UgaWYg KCFtdXRleF90cnlsb2NrKCZzbi0+c3ZtbS0+bXV0ZXgpKQorCQlyZXR1cm4gZmFsc2U7CisJbW11 X3JhbmdlX3NldF9zZXEobXJuLCBjdXJfc2VxKTsKKwltdXRleF91bmxvY2soJnNuLT5zdm1tLT5t dXRleCk7CisJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbnQKLW5vdXZlYXVfcmFuZ2VfZmF1 bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSwgc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UpCitz dGF0aWMgY29uc3Qgc3RydWN0IG1tdV9yYW5nZV9ub3RpZmllcl9vcHMgbm91dmVhdV9zdm1fbXJu X29wcyA9IHsKKwkuaW52YWxpZGF0ZSA9IG5vdXZlYXVfc3ZtX3JhbmdlX2ludmFsaWRhdGUsCit9 OworCitzdGF0aWMgaW50IG5vdXZlYXVfcmFuZ2VfZmF1bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAq c3ZtbSwKKwkJCSAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSwgdm9pZCAqZGF0YSwgdTMy IHNpemUsCisJCQkgICAgICAgdTY0ICpwZm5zLAorCQkJICAgICAgIHN0cnVjdCBzdm1fbm90aWZp ZXIgKm5vdGlmaWVyKQogeworCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9CisJCWppZmZpZXMgKyBt c2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpOworCS8qIEhhdmUgSE1N IGZhdWx0IHBhZ2VzIHdpdGhpbiB0aGUgZmF1bHQgd2luZG93IHRvIHRoZSBHUFUuICovCisJc3Ry dWN0IGhtbV9yYW5nZSByYW5nZSA9IHsKKwkJLm5vdGlmaWVyID0gJm5vdGlmaWVyLT5ub3RpZmll ciwKKwkJLnN0YXJ0ID0gbm90aWZpZXItPm5vdGlmaWVyLmludGVydmFsX3RyZWUuc3RhcnQsCisJ CS5lbmQgPSBub3RpZmllci0+bm90aWZpZXIuaW50ZXJ2YWxfdHJlZS5sYXN0ICsgMSwKKwkJLnBm bnMgPSBwZm5zLAorCQkuZmxhZ3MgPSBub3V2ZWF1X3N2bV9wZm5fZmxhZ3MsCisJCS52YWx1ZXMg PSBub3V2ZWF1X3N2bV9wZm5fdmFsdWVzLAorCQkucGZuX3NoaWZ0ID0gTlZJRl9WTU1fUEZOTUFQ X1YwX0FERFJfU0hJRlQsCisJfTsKKwlzdHJ1Y3QgbW1fc3RydWN0ICptbSA9IG5vdGlmaWVyLT5u b3RpZmllci5tbTsKIAlsb25nIHJldDsKIAotCXJhbmdlLT5kZWZhdWx0X2ZsYWdzID0gMDsKLQly YW5nZS0+cGZuX2ZsYWdzX21hc2sgPSAtMVVMOworCXdoaWxlICh0cnVlKSB7CisJCWlmICh0aW1l X2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKQorCQkJcmV0dXJuIC1FQlVTWTsKIAotCXJldCA9IGht bV9yYW5nZV9yZWdpc3RlcihyYW5nZSwgJnN2bW0tPm1pcnJvcik7Ci0JaWYgKHJldCkgewotCQl1 cF9yZWFkKCZzdm1tLT5ub3RpZmllci5tbS0+bW1hcF9zZW0pOwotCQlyZXR1cm4gKGludClyZXQ7 Ci0JfQorCQlyYW5nZS5ub3RpZmllcl9zZXEgPSBtbXVfcmFuZ2VfcmVhZF9iZWdpbihyYW5nZS5u b3RpZmllcik7CisJCXJhbmdlLmRlZmF1bHRfZmxhZ3MgPSAwOworCQlyYW5nZS5wZm5fZmxhZ3Nf bWFzayA9IC0xVUw7CisJCWRvd25fcmVhZCgmbW0tPm1tYXBfc2VtKTsKKwkJcmV0ID0gaG1tX3Jh bmdlX2ZhdWx0KCZyYW5nZSwgMCk7CisJCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7CisJCWlmIChy ZXQgPD0gMCkgeworCQkJaWYgKHJldCA9PSAwIHx8IHJldCA9PSAtRUJVU1kpCisJCQkJY29udGlu dWU7CisJCQlyZXR1cm4gcmV0OworCQl9CiAKLQlpZiAoIWhtbV9yYW5nZV93YWl0X3VudGlsX3Zh bGlkKHJhbmdlLCBITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKSkgewotCQl1cF9yZWFkKCZzdm1t LT5ub3RpZmllci5tbS0+bW1hcF9zZW0pOwotCQlyZXR1cm4gLUVCVVNZOworCQltdXRleF9sb2Nr KCZzdm1tLT5tdXRleCk7CisJCWlmIChtbXVfcmFuZ2VfcmVhZF9yZXRyeShyYW5nZS5ub3RpZmll ciwKKwkJCQkJIHJhbmdlLm5vdGlmaWVyX3NlcSkpIHsKKwkJCW11dGV4X3VubG9jaygmc3ZtbS0+ bXV0ZXgpOworCQkJY29udGludWU7CisJCX0KKwkJYnJlYWs7CiAJfQogCi0JcmV0ID0gaG1tX3Jh bmdlX2ZhdWx0KHJhbmdlLCAwKTsKLQlpZiAocmV0IDw9IDApIHsKLQkJaWYgKHJldCA9PSAwKQot CQkJcmV0ID0gLUVCVVNZOwotCQl1cF9yZWFkKCZzdm1tLT5ub3RpZmllci5tbS0+bW1hcF9zZW0p OwotCQlobW1fcmFuZ2VfdW5yZWdpc3RlcihyYW5nZSk7Ci0JCXJldHVybiByZXQ7Ci0JfQotCXJl dHVybiAwOworCW5vdXZlYXVfZG1lbV9jb252ZXJ0X3Bmbihkcm0sICZyYW5nZSk7CisKKwlzdm1t LT52bW0tPnZtbS5vYmplY3QuY2xpZW50LT5zdXBlciA9IHRydWU7CisJcmV0ID0gbnZpZl9vYmpl Y3RfaW9jdGwoJnN2bW0tPnZtbS0+dm1tLm9iamVjdCwgZGF0YSwgc2l6ZSwgTlVMTCk7CisJc3Zt bS0+dm1tLT52bW0ub2JqZWN0LmNsaWVudC0+c3VwZXIgPSBmYWxzZTsKKwltdXRleF91bmxvY2so JnN2bW0tPm11dGV4KTsKKworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTU1OSw3 ICs1ODYsNiBAQCBub3V2ZWF1X3N2bV9mYXVsdChzdHJ1Y3QgbnZpZl9ub3RpZnkgKm5vdGlmeSkK IAkJfSBpOwogCQl1NjQgcGh5c1sxNl07CiAJfSBhcmdzOwotCXN0cnVjdCBobW1fcmFuZ2UgcmFu Z2U7CiAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7CiAJdTY0IGluc3QsIHN0YXJ0LCBsaW1p dDsKIAlpbnQgZmksIGZuLCBwaSwgZmlsbDsKQEAgLTYxNSw2ICs2NDEsNyBAQCBub3V2ZWF1X3N2 bV9mYXVsdChzdHJ1Y3QgbnZpZl9ub3RpZnkgKm5vdGlmeSkKIAlhcmdzLmkucC52ZXJzaW9uID0g MDsKIAogCWZvciAoZmkgPSAwOyBmbiA9IGZpICsgMSwgZmkgPCBidWZmZXItPmZhdWx0X25yOyBm aSA9IGZuKSB7CisJCXN0cnVjdCBzdm1fbm90aWZpZXIgbm90aWZpZXI7CiAJCXN0cnVjdCBtbV9z dHJ1Y3QgKm1tOwogCiAJCS8qIENhbmNlbCBhbnkgZmF1bHRzIGZyb20gbm9uLVNWTSBjaGFubmVs cy4gKi8KQEAgLTYyMyw3ICs2NTAsNiBAQCBub3V2ZWF1X3N2bV9mYXVsdChzdHJ1Y3QgbnZpZl9u b3RpZnkgKm5vdGlmeSkKIAkJCWNvbnRpbnVlOwogCQl9CiAJCVNWTU1fREJHKHN2bW0sICJhZGRy ICUwMTZsbHgiLCBidWZmZXItPmZhdWx0W2ZpXS0+YWRkcik7Ci0JCW1tID0gc3ZtbS0+bm90aWZp ZXIubW07CiAKIAkJLyogV2UgdHJ5IGFuZCBncm91cCBoYW5kbGluZyBvZiBmYXVsdHMgd2l0aGlu IGEgc21hbGwKIAkJICogd2luZG93IGludG8gYSBzaW5nbGUgdXBkYXRlLgpAQCAtNjM3LDYgKzY2 MywxMiBAQCBub3V2ZWF1X3N2bV9mYXVsdChzdHJ1Y3QgbnZpZl9ub3RpZnkgKm5vdGlmeSkKIAkJ CXN0YXJ0ID0gbWF4X3QodTY0LCBzdGFydCwgc3ZtbS0+dW5tYW5hZ2VkLmxpbWl0KTsKIAkJU1ZN TV9EQkcoc3ZtbSwgInduZHcgJTAxNmxseC0lMDE2bGx4Iiwgc3RhcnQsIGxpbWl0KTsKIAorCQlt bSA9IHN2bW0tPm5vdGlmaWVyLm1tOworCQlpZiAoIW1tZ2V0X25vdF96ZXJvKG1tKSkgeworCQkJ bm91dmVhdV9zdm1fZmF1bHRfY2FuY2VsX2ZhdWx0KHN2bSwgYnVmZmVyLT5mYXVsdFtmaV0pOwor CQkJY29udGludWU7CisJCX0KKwogCQkvKiBJbnRlcnNlY3QgZmF1bHQgd2luZG93IHdpdGggdGhl IENQVSBWTUEsIGNhbmNlbGxpbmcKIAkJICogdGhlIGZhdWx0IGlmIHRoZSBhZGRyZXNzIGlzIGlu dmFsaWQuCiAJCSAqLwpAQCAtNjQ1LDE2ICs2NzcsMTggQEAgbm91dmVhdV9zdm1fZmF1bHQoc3Ry dWN0IG52aWZfbm90aWZ5ICpub3RpZnkpCiAJCWlmICghdm1hKSB7CiAJCQlTVk1NX0VSUihzdm1t LCAid25kdyAlMDE2bGx4LSUwMTZsbHgiLCBzdGFydCwgbGltaXQpOwogCQkJdXBfcmVhZCgmbW0t Pm1tYXBfc2VtKTsKKwkJCW1tcHV0KG1tKTsKIAkJCW5vdXZlYXVfc3ZtX2ZhdWx0X2NhbmNlbF9m YXVsdChzdm0sIGJ1ZmZlci0+ZmF1bHRbZmldKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCXN0YXJ0 ID0gbWF4X3QodTY0LCBzdGFydCwgdm1hLT52bV9zdGFydCk7CiAJCWxpbWl0ID0gbWluX3QodTY0 LCBsaW1pdCwgdm1hLT52bV9lbmQpOworCQl1cF9yZWFkKCZtbS0+bW1hcF9zZW0pOwogCQlTVk1N X0RCRyhzdm1tLCAid25kdyAlMDE2bGx4LSUwMTZsbHgiLCBzdGFydCwgbGltaXQpOwogCiAJCWlm IChidWZmZXItPmZhdWx0W2ZpXS0+YWRkciAhPSBzdGFydCkgewogCQkJU1ZNTV9FUlIoc3ZtbSwg ImFkZHIgJTAxNmxseCIsIGJ1ZmZlci0+ZmF1bHRbZmldLT5hZGRyKTsKLQkJCXVwX3JlYWQoJm1t LT5tbWFwX3NlbSk7CisJCQltbXB1dChtbSk7CiAJCQlub3V2ZWF1X3N2bV9mYXVsdF9jYW5jZWxf ZmF1bHQoc3ZtLCBidWZmZXItPmZhdWx0W2ZpXSk7CiAJCQljb250aW51ZTsKIAkJfQpAQCAtNzEw LDMzICs3NDQsMTkgQEAgbm91dmVhdV9zdm1fZmF1bHQoc3RydWN0IG52aWZfbm90aWZ5ICpub3Rp ZnkpCiAJCQkgYXJncy5pLnAuYWRkciwKIAkJCSBhcmdzLmkucC5hZGRyICsgYXJncy5pLnAuc2l6 ZSwgZm4gLSBmaSk7CiAKLQkJLyogSGF2ZSBITU0gZmF1bHQgcGFnZXMgd2l0aGluIHRoZSBmYXVs dCB3aW5kb3cgdG8gdGhlIEdQVS4gKi8KLQkJcmFuZ2Uuc3RhcnQgPSBhcmdzLmkucC5hZGRyOwot CQlyYW5nZS5lbmQgPSBhcmdzLmkucC5hZGRyICsgYXJncy5pLnAuc2l6ZTsKLQkJcmFuZ2UucGZu cyA9IGFyZ3MucGh5czsKLQkJcmFuZ2UuZmxhZ3MgPSBub3V2ZWF1X3N2bV9wZm5fZmxhZ3M7Ci0J CXJhbmdlLnZhbHVlcyA9IG5vdXZlYXVfc3ZtX3Bmbl92YWx1ZXM7Ci0JCXJhbmdlLnBmbl9zaGlm dCA9IE5WSUZfVk1NX1BGTk1BUF9WMF9BRERSX1NISUZUOwotYWdhaW46Ci0JCXJldCA9IG5vdXZl YXVfcmFuZ2VfZmF1bHQoc3ZtbSwgJnJhbmdlKTsKLQkJaWYgKHJldCA9PSAwKSB7Ci0JCQltdXRl eF9sb2NrKCZzdm1tLT5tdXRleCk7Ci0JCQlpZiAoIW5vdXZlYXVfcmFuZ2VfZG9uZSgmcmFuZ2Up KSB7Ci0JCQkJbXV0ZXhfdW5sb2NrKCZzdm1tLT5tdXRleCk7Ci0JCQkJZ290byBhZ2FpbjsKLQkJ CX0KLQotCQkJbm91dmVhdV9kbWVtX2NvbnZlcnRfcGZuKHN2bS0+ZHJtLCAmcmFuZ2UpOwotCi0J CQlzdm1tLT52bW0tPnZtbS5vYmplY3QuY2xpZW50LT5zdXBlciA9IHRydWU7Ci0JCQlyZXQgPSBu dmlmX29iamVjdF9pb2N0bCgmc3ZtbS0+dm1tLT52bW0ub2JqZWN0LAotCQkJCQkJJmFyZ3MsIHNp emVvZihhcmdzLmkpICsKLQkJCQkJCXBpICogc2l6ZW9mKGFyZ3MucGh5c1swXSksCi0JCQkJCQlO VUxMKTsKLQkJCXN2bW0tPnZtbS0+dm1tLm9iamVjdC5jbGllbnQtPnN1cGVyID0gZmFsc2U7Ci0J CQltdXRleF91bmxvY2soJnN2bW0tPm11dGV4KTsKLQkJCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7 CisJCW5vdGlmaWVyLnN2bW0gPSBzdm1tOworCQlub3RpZmllci5ub3RpZmllci5vcHMgPSAmbm91 dmVhdV9zdm1fbXJuX29wczsKKwkJcmV0ID0gbW11X3JhbmdlX25vdGlmaWVyX2luc2VydCgmbm90 aWZpZXIubm90aWZpZXIsCisJCQkJCQlhcmdzLmkucC5hZGRyLCBhcmdzLmkucC5zaXplLAorCQkJ CQkJc3ZtbS0+bm90aWZpZXIubW0pOworCQlpZiAoIXJldCkgeworCQkJcmV0ID0gbm91dmVhdV9y YW5nZV9mYXVsdCgKKwkJCQlzdm1tLCBzdm0tPmRybSwgJmFyZ3MsCisJCQkJc2l6ZW9mKGFyZ3Mu aSkgKyBwaSAqIHNpemVvZihhcmdzLnBoeXNbMF0pLAorCQkJCWFyZ3MucGh5cywgJm5vdGlmaWVy KTsKKwkJCW1tdV9yYW5nZV9ub3RpZmllcl9yZW1vdmUoJm5vdGlmaWVyLm5vdGlmaWVyKTsKIAkJ fQorCQltbXB1dChtbSk7CiAKIAkJLyogQ2FuY2VsIGFueSBmYXVsdHMgaW4gdGhlIHdpbmRvdyB3 aG9zZSBwYWdlcyBkaWRuJ3QgbWFuYWdlCiAJCSAqIHRvIGtlZXAgdGhlaXIgdmFsaWQgYml0LCBv ciBzdGF5IHdyaXRlYWJsZSB3aGVuIHJlcXVpcmVkLgpAQCAtNzQ1LDEwICs3NjUsMTAgQEAgbm91 dmVhdV9zdm1fZmF1bHQoc3RydWN0IG52aWZfbm90aWZ5ICpub3RpZnkpCiAJCSAqLwogCQl3aGls ZSAoZmkgPCBmbikgewogCQkJc3RydWN0IG5vdXZlYXVfc3ZtX2ZhdWx0ICpmYXVsdCA9IGJ1ZmZl ci0+ZmF1bHRbZmkrK107Ci0JCQlwaSA9IChmYXVsdC0+YWRkciAtIHJhbmdlLnN0YXJ0KSA+PiBQ QUdFX1NISUZUOworCQkJcGkgPSAoZmF1bHQtPmFkZHIgLSBhcmdzLmkucC5hZGRyKSA+PiBQQUdF X1NISUZUOwogCQkJaWYgKHJldCB8fAotCQkJICAgICAhKHJhbmdlLnBmbnNbcGldICYgTlZJRl9W TU1fUEZOTUFQX1YwX1YpIHx8Ci0JCQkgICAgKCEocmFuZ2UucGZuc1twaV0gJiBOVklGX1ZNTV9Q Rk5NQVBfVjBfVykgJiYKKwkJCSAgICAgIShhcmdzLnBoeXNbcGldICYgTlZJRl9WTU1fUEZOTUFQ X1YwX1YpIHx8CisJCQkgICAgKCEoYXJncy5waHlzW3BpXSAmIE5WSUZfVk1NX1BGTk1BUF9WMF9X KSAmJgogCQkJICAgICBmYXVsdC0+YWNjZXNzICE9IDAgJiYgZmF1bHQtPmFjY2VzcyAhPSAzKSkg ewogCQkJCW5vdXZlYXVfc3ZtX2ZhdWx0X2NhbmNlbF9mYXVsdChzdm0sIGZhdWx0KTsKIAkJCQlj b250aW51ZTsKLS0gCjIuMjMuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnBy b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94 ZW4tZGV2ZWw= 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 24924CA9EC0 for ; Mon, 28 Oct 2019 20:17:26 +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 0858521721 for ; Mon, 28 Oct 2019 20:17:26 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0858521721 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 833706EA16; Mon, 28 Oct 2019 20:17:19 +0000 (UTC) Received: from mail-qk1-x742.google.com (mail-qk1-x742.google.com [IPv6:2607:f8b0:4864:20::742]) by gabe.freedesktop.org (Postfix) with ESMTPS id 536DC89DE6 for ; Mon, 28 Oct 2019 20:10:51 +0000 (UTC) Received: by mail-qk1-x742.google.com with SMTP id u184so9779445qkd.4 for ; Mon, 28 Oct 2019 13:10:51 -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=PQZNLb2n/VZGpEmak/Qy43FMq9i6D/cb88Nb6FZ4HCc=; b=UAiFuEMA4gzKUx+jravQFQFJQvnUkXGS0mZsxKoIeWMJo9n4jVwjXAzSzP8uZXHduQ Kv3z5rVELwWmZOkVGqHt+MLHjf1/nsbW4pqIBc9da2Ns5te6m7rXkYnvDGOolW65fx9P Fz8DqUe6x0aJTkcO5KSNN4Er15g0lcxkWSgMiZd2Oe1QWIt9AQxn3dglR8oqeHo8/FHn MqvUV1FGq/W0bwXzWnxPg/G+6Sw+zeavESikFEaAPR56961Uo5eNHgnbFG2oPp+ZW5HO dbnZYzIKaM0pOi8gGumSOkUTlLesZrZB8IdLWR/4FFa5NYZlT9ClFKvLKWuaNeMY2UMK kFrQ== X-Gm-Message-State: APjAAAV7+quAmWDWAGuXpqnAyAwnlsipWVnA2pCI+4fq+lENasNYbK+p hlylSV8DIW06kiQgoC/x9367pw== X-Google-Smtp-Source: APXvYqzMU7VQvTju2rb3w6e+2fL+RjV7hRaY2VBwnJrbzaMQL58Q1wBtGQ3o/J/TSiYTcAN3ImKl5A== X-Received: by 2002:a37:6643:: with SMTP id a64mr18555491qkc.144.1572293450333; Mon, 28 Oct 2019 13:10:50 -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 u9sm1501115qke.50.2019.10.28.13.10.43 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 28 Oct 2019 13:10:46 -0700 (PDT) Received: from jgg by mlx.ziepe.ca with local (Exim 4.90_1) (envelope-from ) id 1iPBLf-0001h3-HR; 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 11/15] nouveau: use mmu_range_notifier instead of hmm_mirror Date: Mon, 28 Oct 2019 17:10:28 -0300 Message-Id: <20191028201032.6352-12-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=PQZNLb2n/VZGpEmak/Qy43FMq9i6D/cb88Nb6FZ4HCc=; b=JDfbNHty1ny9u0tolzz+R0bxyhO0ollb7F5vPylbs5XjRPew3ElqUgkRpnO1KqyNHJ lbmxT+WbuV2iqQKttXAinvJg6mLlpZOBkINKsbyZqgOCdsmgbxz+ymyca8lTAo2EIudp RdrM54tOjIVl+x7WKO8GaCpeaojoHs5YLsjcx7foxAOaiA94okZYV8o6vQfQCwuPbxr0 yggvPWtLeAKJS+9waHFzTuYqiUemPetepD5ewVTHRTeKTa3PYZPmq7T889b0g2RSfWRi iL7jN1WDPg49bHl8qlfraAoRYGBU7o23Ymndp/Dt+umlDMRAc3zH7TPYUwjq23HTYvtx Z/OQ== 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: <20191028201028.che6rDqJ8HBukiCwppQFsNJgOnNETereZDoco54vCPY@z> RnJvbTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgoKUmVtb3ZlIHRoZSBobW1f bWlycm9yIG9iamVjdCBhbmQgdXNlIHRoZSBtbXVfcmFuZ2Vfbm90aWZpZXIgQVBJIGluc3RlYWQK Zm9yIHRoZSByYW5nZSwgYW5kIHVzZSB0aGUgbm9ybWFsIG1tdV9ub3RpZmllciBBUEkgZm9yIHRo ZSBnZW5lcmFsCmludmFsaWRhdGlvbiBjYWxsYmFjay4KCldoaWxlIGhlcmUgcmUtb3JnYW5pemUg dGhlIHBhZ2VmYXVsdCBwYXRoIHNvIHRoZSBsb2NraW5nIHBhdHRlcm4gaXMgY2xlYXIuCgpub3V2 ZWF1IGlzIHRoZSBvbmx5IGRyaXZlciB0aGF0IHVzZXMgYSB0ZW1wb3JhcnkgcmFuZ2Ugb2JqZWN0 IGFuZCBpbnN0ZWFkCmZvcndhcmRzIG5lYXJseSBldmVyeSBpbnZhbGlkYXRpb24gcmFuZ2UgZGly ZWN0bHkgdG8gdGhlIEhXLiBXaGlsZSB0aGlzIGlzCm5vdCBob3cgdGhlIG1tdV9yYW5nZV9ub3Rp ZmllciB3YXMgaW50ZW5kZWQgdG8gYmUgdXNlZCwgdGhlIG92ZXJoZWFkcyBvbgp0aGUgcGFnZWZh dWx0aW5nIHBhdGggYXJlIHNpbWlsYXIgdG8gdGhlIGV4aXN0aW5nIGhtbV9taXJyb3IgdmVyc2lv bi4KUGFydGljdWxhcmx5IHNpbmNlIHRoZSBpbnRlcnZhbCB0cmVlIHdpbGwgYmUgc21hbGwuCgpD YzogQmVuIFNrZWdncyA8YnNrZWdnc0ByZWRoYXQuY29tPgpDYzogZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpDYzogbm91dmVhdUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKQ2M6IFJhbHBo IENhbXBiZWxsIDxyY2FtcGJlbGxAbnZpZGlhLmNvbT4KU2lnbmVkLW9mZi1ieTogSmFzb24gR3Vu dGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25v dXZlYXVfc3ZtLmMgfCAxODAgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgODAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2 ZWF1L25vdXZlYXVfc3ZtLmMKaW5kZXggNTc3Zjg4MTE5MjVhNTkuLmYyNzMxN2ZiZTM2ZjQ1IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmMKQEAgLTk2LDggKzk2LDYgQEAgc3Ry dWN0IG5vdXZlYXVfc3ZtbSB7CiAJfSB1bm1hbmFnZWQ7CiAKIAlzdHJ1Y3QgbXV0ZXggbXV0ZXg7 Ci0KLQlzdHJ1Y3QgaG1tX21pcnJvciBtaXJyb3I7CiB9OwogCiAjZGVmaW5lIFNWTU1fREJHKHMs ZixhLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXApAQCAtMjkzLDIzICsyOTEsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZp ZXJfb3BzIG5vdXZlYXVfbW5fb3BzID0gewogCS5mcmVlX25vdGlmaWVyID0gbm91dmVhdV9zdm1t X2ZyZWVfbm90aWZpZXIsCiB9OwogCi1zdGF0aWMgaW50Ci1ub3V2ZWF1X3N2bW1fc3luY19jcHVf ZGV2aWNlX3BhZ2V0YWJsZXMoc3RydWN0IGhtbV9taXJyb3IgKm1pcnJvciwKLQkJCQkJY29uc3Qg c3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqdXBkYXRlKQotewotCXJldHVybiAwOwotfQotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGhtbV9taXJyb3Jfb3BzIG5vdXZlYXVfc3ZtbSA9IHsKLQkuc3lu Y19jcHVfZGV2aWNlX3BhZ2V0YWJsZXMgPSBub3V2ZWF1X3N2bW1fc3luY19jcHVfZGV2aWNlX3Bh Z2V0YWJsZXMsCi19OwotCiB2b2lkCiBub3V2ZWF1X3N2bW1fZmluaShzdHJ1Y3Qgbm91dmVhdV9z dm1tICoqcHN2bW0pCiB7CiAJc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSA9ICpwc3ZtbTsKIAlp ZiAoc3ZtbSkgewotCQlobW1fbWlycm9yX3VucmVnaXN0ZXIoJnN2bW0tPm1pcnJvcik7CiAJCW11 dGV4X2xvY2soJnN2bW0tPm11dGV4KTsKIAkJc3ZtbS0+dm1tID0gTlVMTDsKIAkJbXV0ZXhfdW5s b2NrKCZzdm1tLT5tdXRleCk7CkBAIC0zNTcsMTUgKzM0MywxMCBAQCBub3V2ZWF1X3N2bW1faW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQlnb3RvIG91dF9mcmVlOwog CiAJZG93bl93cml0ZSgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKLQlzdm1tLT5taXJyb3Iub3Bz ID0gJm5vdXZlYXVfc3ZtbTsKLQlyZXQgPSBobW1fbWlycm9yX3JlZ2lzdGVyKCZzdm1tLT5taXJy b3IsIGN1cnJlbnQtPm1tKTsKLQlpZiAocmV0KQotCQlnb3RvIG91dF9tbV91bmxvY2s7Ci0KIAlz dm1tLT5ub3RpZmllci5vcHMgPSAmbm91dmVhdV9tbl9vcHM7CiAJcmV0ID0gX19tbXVfbm90aWZp ZXJfcmVnaXN0ZXIoJnN2bW0tPm5vdGlmaWVyLCBjdXJyZW50LT5tbSk7CiAJaWYgKHJldCkKLQkJ Z290byBvdXRfaG1tX3VucmVnaXN0ZXI7CisJCWdvdG8gb3V0X21tX3VubG9jazsKIAkvKiBOb3Rl LCBvd25lcnNoaXAgb2Ygc3ZtbSB0cmFuc2ZlcnMgdG8gbW11X25vdGlmaWVyICovCiAKIAljbGkt PnN2bS5zdm1tID0gc3ZtbTsKQEAgLTM3NCw4ICszNTUsNiBAQCBub3V2ZWF1X3N2bW1faW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCW11dGV4X3VubG9jaygmY2xpLT5t dXRleCk7CiAJcmV0dXJuIDA7CiAKLW91dF9obW1fdW5yZWdpc3RlcjoKLQlobW1fbWlycm9yX3Vu cmVnaXN0ZXIoJnN2bW0tPm1pcnJvcik7CiBvdXRfbW1fdW5sb2NrOgogCXVwX3dyaXRlKCZjdXJy ZW50LT5tbS0+bW1hcF9zZW0pOwogb3V0X2ZyZWU6CkBAIC01MDMsNDMgKzQ4Miw5MSBAQCBub3V2 ZWF1X3N2bV9mYXVsdF9jYWNoZShzdHJ1Y3Qgbm91dmVhdV9zdm0gKnN2bSwKIAkJZmF1bHQtPmlu c3QsIGZhdWx0LT5hZGRyLCBmYXVsdC0+YWNjZXNzKTsKIH0KIAotc3RhdGljIGlubGluZSBib29s Ci1ub3V2ZWF1X3JhbmdlX2RvbmUoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UpCitzdHJ1Y3Qgc3Zt X25vdGlmaWVyIHsKKwlzdHJ1Y3QgbW11X3JhbmdlX25vdGlmaWVyIG5vdGlmaWVyOworCXN0cnVj dCBub3V2ZWF1X3N2bW0gKnN2bW07Cit9OworCitzdGF0aWMgYm9vbCBub3V2ZWF1X3N2bV9yYW5n ZV9pbnZhbGlkYXRlKHN0cnVjdCBtbXVfcmFuZ2Vfbm90aWZpZXIgKm1ybiwKKwkJCQkJIGNvbnN0 IHN0cnVjdCBtbXVfbm90aWZpZXJfcmFuZ2UgKnJhbmdlLAorCQkJCQkgdW5zaWduZWQgbG9uZyBj dXJfc2VxKQogewotCWJvb2wgcmV0ID0gaG1tX3JhbmdlX3ZhbGlkKHJhbmdlKTsKKwlzdHJ1Y3Qg c3ZtX25vdGlmaWVyICpzbiA9CisJCWNvbnRhaW5lcl9vZihtcm4sIHN0cnVjdCBzdm1fbm90aWZp ZXIsIG5vdGlmaWVyKTsKIAotCWhtbV9yYW5nZV91bnJlZ2lzdGVyKHJhbmdlKTsKLQlyZXR1cm4g cmV0OworCS8qCisJICogc2VyaWFsaXplcyB0aGUgdXBkYXRlIHRvIG1ybi0+aW52YWxpZGF0ZV9z ZXEgZG9uZSBieSBjYWxsZXIgYW5kCisJICogcHJldmVudHMgaW52YWxpZGF0aW9uIG9mIHRoZSBQ VEUgZnJvbSBwcm9ncmVzc2luZyB3aGlsZSBIVyBpcyBiZWluZworCSAqIHByb2dyYW1tZWQuIFRo aXMgaXMgdmVyeSBoYWNreSBhbmQgb25seSB3b3JrcyBiZWNhdXNlIHRoZSBub3JtYWwKKwkgKiBu b3RpZmllciB0aGF0IGRvZXMgaW52YWxpZGF0aW9uIGlzIGFsd2F5cyBjYWxsZWQgYWZ0ZXIgdGhl IHJhbmdlCisJICogbm90aWZpZXIuCisJICovCisJaWYgKG1tdV9ub3RpZmllcl9yYW5nZV9ibG9j a2FibGUocmFuZ2UpKQorCQltdXRleF9sb2NrKCZzbi0+c3ZtbS0+bXV0ZXgpOworCWVsc2UgaWYg KCFtdXRleF90cnlsb2NrKCZzbi0+c3ZtbS0+bXV0ZXgpKQorCQlyZXR1cm4gZmFsc2U7CisJbW11 X3JhbmdlX3NldF9zZXEobXJuLCBjdXJfc2VxKTsKKwltdXRleF91bmxvY2soJnNuLT5zdm1tLT5t dXRleCk7CisJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbnQKLW5vdXZlYXVfcmFuZ2VfZmF1 bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbSwgc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UpCitz dGF0aWMgY29uc3Qgc3RydWN0IG1tdV9yYW5nZV9ub3RpZmllcl9vcHMgbm91dmVhdV9zdm1fbXJu X29wcyA9IHsKKwkuaW52YWxpZGF0ZSA9IG5vdXZlYXVfc3ZtX3JhbmdlX2ludmFsaWRhdGUsCit9 OworCitzdGF0aWMgaW50IG5vdXZlYXVfcmFuZ2VfZmF1bHQoc3RydWN0IG5vdXZlYXVfc3ZtbSAq c3ZtbSwKKwkJCSAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSwgdm9pZCAqZGF0YSwgdTMy IHNpemUsCisJCQkgICAgICAgdTY0ICpwZm5zLAorCQkJICAgICAgIHN0cnVjdCBzdm1fbm90aWZp ZXIgKm5vdGlmaWVyKQogeworCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9CisJCWppZmZpZXMgKyBt c2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJTUVPVVQpOworCS8qIEhhdmUgSE1N IGZhdWx0IHBhZ2VzIHdpdGhpbiB0aGUgZmF1bHQgd2luZG93IHRvIHRoZSBHUFUuICovCisJc3Ry dWN0IGhtbV9yYW5nZSByYW5nZSA9IHsKKwkJLm5vdGlmaWVyID0gJm5vdGlmaWVyLT5ub3RpZmll ciwKKwkJLnN0YXJ0ID0gbm90aWZpZXItPm5vdGlmaWVyLmludGVydmFsX3RyZWUuc3RhcnQsCisJ CS5lbmQgPSBub3RpZmllci0+bm90aWZpZXIuaW50ZXJ2YWxfdHJlZS5sYXN0ICsgMSwKKwkJLnBm bnMgPSBwZm5zLAorCQkuZmxhZ3MgPSBub3V2ZWF1X3N2bV9wZm5fZmxhZ3MsCisJCS52YWx1ZXMg PSBub3V2ZWF1X3N2bV9wZm5fdmFsdWVzLAorCQkucGZuX3NoaWZ0ID0gTlZJRl9WTU1fUEZOTUFQ X1YwX0FERFJfU0hJRlQsCisJfTsKKwlzdHJ1Y3QgbW1fc3RydWN0ICptbSA9IG5vdGlmaWVyLT5u b3RpZmllci5tbTsKIAlsb25nIHJldDsKIAotCXJhbmdlLT5kZWZhdWx0X2ZsYWdzID0gMDsKLQly YW5nZS0+cGZuX2ZsYWdzX21hc2sgPSAtMVVMOworCXdoaWxlICh0cnVlKSB7CisJCWlmICh0aW1l X2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKQorCQkJcmV0dXJuIC1FQlVTWTsKIAotCXJldCA9IGht bV9yYW5nZV9yZWdpc3RlcihyYW5nZSwgJnN2bW0tPm1pcnJvcik7Ci0JaWYgKHJldCkgewotCQl1 cF9yZWFkKCZzdm1tLT5ub3RpZmllci5tbS0+bW1hcF9zZW0pOwotCQlyZXR1cm4gKGludClyZXQ7 Ci0JfQorCQlyYW5nZS5ub3RpZmllcl9zZXEgPSBtbXVfcmFuZ2VfcmVhZF9iZWdpbihyYW5nZS5u b3RpZmllcik7CisJCXJhbmdlLmRlZmF1bHRfZmxhZ3MgPSAwOworCQlyYW5nZS5wZm5fZmxhZ3Nf bWFzayA9IC0xVUw7CisJCWRvd25fcmVhZCgmbW0tPm1tYXBfc2VtKTsKKwkJcmV0ID0gaG1tX3Jh bmdlX2ZhdWx0KCZyYW5nZSwgMCk7CisJCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7CisJCWlmIChy ZXQgPD0gMCkgeworCQkJaWYgKHJldCA9PSAwIHx8IHJldCA9PSAtRUJVU1kpCisJCQkJY29udGlu dWU7CisJCQlyZXR1cm4gcmV0OworCQl9CiAKLQlpZiAoIWhtbV9yYW5nZV93YWl0X3VudGlsX3Zh bGlkKHJhbmdlLCBITU1fUkFOR0VfREVGQVVMVF9USU1FT1VUKSkgewotCQl1cF9yZWFkKCZzdm1t LT5ub3RpZmllci5tbS0+bW1hcF9zZW0pOwotCQlyZXR1cm4gLUVCVVNZOworCQltdXRleF9sb2Nr KCZzdm1tLT5tdXRleCk7CisJCWlmIChtbXVfcmFuZ2VfcmVhZF9yZXRyeShyYW5nZS5ub3RpZmll ciwKKwkJCQkJIHJhbmdlLm5vdGlmaWVyX3NlcSkpIHsKKwkJCW11dGV4X3VubG9jaygmc3ZtbS0+ bXV0ZXgpOworCQkJY29udGludWU7CisJCX0KKwkJYnJlYWs7CiAJfQogCi0JcmV0ID0gaG1tX3Jh bmdlX2ZhdWx0KHJhbmdlLCAwKTsKLQlpZiAocmV0IDw9IDApIHsKLQkJaWYgKHJldCA9PSAwKQot CQkJcmV0ID0gLUVCVVNZOwotCQl1cF9yZWFkKCZzdm1tLT5ub3RpZmllci5tbS0+bW1hcF9zZW0p OwotCQlobW1fcmFuZ2VfdW5yZWdpc3RlcihyYW5nZSk7Ci0JCXJldHVybiByZXQ7Ci0JfQotCXJl dHVybiAwOworCW5vdXZlYXVfZG1lbV9jb252ZXJ0X3Bmbihkcm0sICZyYW5nZSk7CisKKwlzdm1t LT52bW0tPnZtbS5vYmplY3QuY2xpZW50LT5zdXBlciA9IHRydWU7CisJcmV0ID0gbnZpZl9vYmpl Y3RfaW9jdGwoJnN2bW0tPnZtbS0+dm1tLm9iamVjdCwgZGF0YSwgc2l6ZSwgTlVMTCk7CisJc3Zt bS0+dm1tLT52bW0ub2JqZWN0LmNsaWVudC0+c3VwZXIgPSBmYWxzZTsKKwltdXRleF91bmxvY2so JnN2bW0tPm11dGV4KTsKKworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTU1OSw3 ICs1ODYsNiBAQCBub3V2ZWF1X3N2bV9mYXVsdChzdHJ1Y3QgbnZpZl9ub3RpZnkgKm5vdGlmeSkK IAkJfSBpOwogCQl1NjQgcGh5c1sxNl07CiAJfSBhcmdzOwotCXN0cnVjdCBobW1fcmFuZ2UgcmFu Z2U7CiAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7CiAJdTY0IGluc3QsIHN0YXJ0LCBsaW1p dDsKIAlpbnQgZmksIGZuLCBwaSwgZmlsbDsKQEAgLTYxNSw2ICs2NDEsNyBAQCBub3V2ZWF1X3N2 bV9mYXVsdChzdHJ1Y3QgbnZpZl9ub3RpZnkgKm5vdGlmeSkKIAlhcmdzLmkucC52ZXJzaW9uID0g MDsKIAogCWZvciAoZmkgPSAwOyBmbiA9IGZpICsgMSwgZmkgPCBidWZmZXItPmZhdWx0X25yOyBm aSA9IGZuKSB7CisJCXN0cnVjdCBzdm1fbm90aWZpZXIgbm90aWZpZXI7CiAJCXN0cnVjdCBtbV9z dHJ1Y3QgKm1tOwogCiAJCS8qIENhbmNlbCBhbnkgZmF1bHRzIGZyb20gbm9uLVNWTSBjaGFubmVs cy4gKi8KQEAgLTYyMyw3ICs2NTAsNiBAQCBub3V2ZWF1X3N2bV9mYXVsdChzdHJ1Y3QgbnZpZl9u b3RpZnkgKm5vdGlmeSkKIAkJCWNvbnRpbnVlOwogCQl9CiAJCVNWTU1fREJHKHN2bW0sICJhZGRy ICUwMTZsbHgiLCBidWZmZXItPmZhdWx0W2ZpXS0+YWRkcik7Ci0JCW1tID0gc3ZtbS0+bm90aWZp ZXIubW07CiAKIAkJLyogV2UgdHJ5IGFuZCBncm91cCBoYW5kbGluZyBvZiBmYXVsdHMgd2l0aGlu IGEgc21hbGwKIAkJICogd2luZG93IGludG8gYSBzaW5nbGUgdXBkYXRlLgpAQCAtNjM3LDYgKzY2 MywxMiBAQCBub3V2ZWF1X3N2bV9mYXVsdChzdHJ1Y3QgbnZpZl9ub3RpZnkgKm5vdGlmeSkKIAkJ CXN0YXJ0ID0gbWF4X3QodTY0LCBzdGFydCwgc3ZtbS0+dW5tYW5hZ2VkLmxpbWl0KTsKIAkJU1ZN TV9EQkcoc3ZtbSwgInduZHcgJTAxNmxseC0lMDE2bGx4Iiwgc3RhcnQsIGxpbWl0KTsKIAorCQlt bSA9IHN2bW0tPm5vdGlmaWVyLm1tOworCQlpZiAoIW1tZ2V0X25vdF96ZXJvKG1tKSkgeworCQkJ bm91dmVhdV9zdm1fZmF1bHRfY2FuY2VsX2ZhdWx0KHN2bSwgYnVmZmVyLT5mYXVsdFtmaV0pOwor CQkJY29udGludWU7CisJCX0KKwogCQkvKiBJbnRlcnNlY3QgZmF1bHQgd2luZG93IHdpdGggdGhl IENQVSBWTUEsIGNhbmNlbGxpbmcKIAkJICogdGhlIGZhdWx0IGlmIHRoZSBhZGRyZXNzIGlzIGlu dmFsaWQuCiAJCSAqLwpAQCAtNjQ1LDE2ICs2NzcsMTggQEAgbm91dmVhdV9zdm1fZmF1bHQoc3Ry dWN0IG52aWZfbm90aWZ5ICpub3RpZnkpCiAJCWlmICghdm1hKSB7CiAJCQlTVk1NX0VSUihzdm1t LCAid25kdyAlMDE2bGx4LSUwMTZsbHgiLCBzdGFydCwgbGltaXQpOwogCQkJdXBfcmVhZCgmbW0t Pm1tYXBfc2VtKTsKKwkJCW1tcHV0KG1tKTsKIAkJCW5vdXZlYXVfc3ZtX2ZhdWx0X2NhbmNlbF9m YXVsdChzdm0sIGJ1ZmZlci0+ZmF1bHRbZmldKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCXN0YXJ0 ID0gbWF4X3QodTY0LCBzdGFydCwgdm1hLT52bV9zdGFydCk7CiAJCWxpbWl0ID0gbWluX3QodTY0 LCBsaW1pdCwgdm1hLT52bV9lbmQpOworCQl1cF9yZWFkKCZtbS0+bW1hcF9zZW0pOwogCQlTVk1N X0RCRyhzdm1tLCAid25kdyAlMDE2bGx4LSUwMTZsbHgiLCBzdGFydCwgbGltaXQpOwogCiAJCWlm IChidWZmZXItPmZhdWx0W2ZpXS0+YWRkciAhPSBzdGFydCkgewogCQkJU1ZNTV9FUlIoc3ZtbSwg ImFkZHIgJTAxNmxseCIsIGJ1ZmZlci0+ZmF1bHRbZmldLT5hZGRyKTsKLQkJCXVwX3JlYWQoJm1t LT5tbWFwX3NlbSk7CisJCQltbXB1dChtbSk7CiAJCQlub3V2ZWF1X3N2bV9mYXVsdF9jYW5jZWxf ZmF1bHQoc3ZtLCBidWZmZXItPmZhdWx0W2ZpXSk7CiAJCQljb250aW51ZTsKIAkJfQpAQCAtNzEw LDMzICs3NDQsMTkgQEAgbm91dmVhdV9zdm1fZmF1bHQoc3RydWN0IG52aWZfbm90aWZ5ICpub3Rp ZnkpCiAJCQkgYXJncy5pLnAuYWRkciwKIAkJCSBhcmdzLmkucC5hZGRyICsgYXJncy5pLnAuc2l6 ZSwgZm4gLSBmaSk7CiAKLQkJLyogSGF2ZSBITU0gZmF1bHQgcGFnZXMgd2l0aGluIHRoZSBmYXVs dCB3aW5kb3cgdG8gdGhlIEdQVS4gKi8KLQkJcmFuZ2Uuc3RhcnQgPSBhcmdzLmkucC5hZGRyOwot CQlyYW5nZS5lbmQgPSBhcmdzLmkucC5hZGRyICsgYXJncy5pLnAuc2l6ZTsKLQkJcmFuZ2UucGZu cyA9IGFyZ3MucGh5czsKLQkJcmFuZ2UuZmxhZ3MgPSBub3V2ZWF1X3N2bV9wZm5fZmxhZ3M7Ci0J CXJhbmdlLnZhbHVlcyA9IG5vdXZlYXVfc3ZtX3Bmbl92YWx1ZXM7Ci0JCXJhbmdlLnBmbl9zaGlm dCA9IE5WSUZfVk1NX1BGTk1BUF9WMF9BRERSX1NISUZUOwotYWdhaW46Ci0JCXJldCA9IG5vdXZl YXVfcmFuZ2VfZmF1bHQoc3ZtbSwgJnJhbmdlKTsKLQkJaWYgKHJldCA9PSAwKSB7Ci0JCQltdXRl eF9sb2NrKCZzdm1tLT5tdXRleCk7Ci0JCQlpZiAoIW5vdXZlYXVfcmFuZ2VfZG9uZSgmcmFuZ2Up KSB7Ci0JCQkJbXV0ZXhfdW5sb2NrKCZzdm1tLT5tdXRleCk7Ci0JCQkJZ290byBhZ2FpbjsKLQkJ CX0KLQotCQkJbm91dmVhdV9kbWVtX2NvbnZlcnRfcGZuKHN2bS0+ZHJtLCAmcmFuZ2UpOwotCi0J CQlzdm1tLT52bW0tPnZtbS5vYmplY3QuY2xpZW50LT5zdXBlciA9IHRydWU7Ci0JCQlyZXQgPSBu dmlmX29iamVjdF9pb2N0bCgmc3ZtbS0+dm1tLT52bW0ub2JqZWN0LAotCQkJCQkJJmFyZ3MsIHNp emVvZihhcmdzLmkpICsKLQkJCQkJCXBpICogc2l6ZW9mKGFyZ3MucGh5c1swXSksCi0JCQkJCQlO VUxMKTsKLQkJCXN2bW0tPnZtbS0+dm1tLm9iamVjdC5jbGllbnQtPnN1cGVyID0gZmFsc2U7Ci0J CQltdXRleF91bmxvY2soJnN2bW0tPm11dGV4KTsKLQkJCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7 CisJCW5vdGlmaWVyLnN2bW0gPSBzdm1tOworCQlub3RpZmllci5ub3RpZmllci5vcHMgPSAmbm91 dmVhdV9zdm1fbXJuX29wczsKKwkJcmV0ID0gbW11X3JhbmdlX25vdGlmaWVyX2luc2VydCgmbm90 aWZpZXIubm90aWZpZXIsCisJCQkJCQlhcmdzLmkucC5hZGRyLCBhcmdzLmkucC5zaXplLAorCQkJ CQkJc3ZtbS0+bm90aWZpZXIubW0pOworCQlpZiAoIXJldCkgeworCQkJcmV0ID0gbm91dmVhdV9y YW5nZV9mYXVsdCgKKwkJCQlzdm1tLCBzdm0tPmRybSwgJmFyZ3MsCisJCQkJc2l6ZW9mKGFyZ3Mu aSkgKyBwaSAqIHNpemVvZihhcmdzLnBoeXNbMF0pLAorCQkJCWFyZ3MucGh5cywgJm5vdGlmaWVy KTsKKwkJCW1tdV9yYW5nZV9ub3RpZmllcl9yZW1vdmUoJm5vdGlmaWVyLm5vdGlmaWVyKTsKIAkJ fQorCQltbXB1dChtbSk7CiAKIAkJLyogQ2FuY2VsIGFueSBmYXVsdHMgaW4gdGhlIHdpbmRvdyB3 aG9zZSBwYWdlcyBkaWRuJ3QgbWFuYWdlCiAJCSAqIHRvIGtlZXAgdGhlaXIgdmFsaWQgYml0LCBv ciBzdGF5IHdyaXRlYWJsZSB3aGVuIHJlcXVpcmVkLgpAQCAtNzQ1LDEwICs3NjUsMTAgQEAgbm91 dmVhdV9zdm1fZmF1bHQoc3RydWN0IG52aWZfbm90aWZ5ICpub3RpZnkpCiAJCSAqLwogCQl3aGls ZSAoZmkgPCBmbikgewogCQkJc3RydWN0IG5vdXZlYXVfc3ZtX2ZhdWx0ICpmYXVsdCA9IGJ1ZmZl ci0+ZmF1bHRbZmkrK107Ci0JCQlwaSA9IChmYXVsdC0+YWRkciAtIHJhbmdlLnN0YXJ0KSA+PiBQ QUdFX1NISUZUOworCQkJcGkgPSAoZmF1bHQtPmFkZHIgLSBhcmdzLmkucC5hZGRyKSA+PiBQQUdF X1NISUZUOwogCQkJaWYgKHJldCB8fAotCQkJICAgICAhKHJhbmdlLnBmbnNbcGldICYgTlZJRl9W TU1fUEZOTUFQX1YwX1YpIHx8Ci0JCQkgICAgKCEocmFuZ2UucGZuc1twaV0gJiBOVklGX1ZNTV9Q Rk5NQVBfVjBfVykgJiYKKwkJCSAgICAgIShhcmdzLnBoeXNbcGldICYgTlZJRl9WTU1fUEZOTUFQ X1YwX1YpIHx8CisJCQkgICAgKCEoYXJncy5waHlzW3BpXSAmIE5WSUZfVk1NX1BGTk1BUF9WMF9X KSAmJgogCQkJICAgICBmYXVsdC0+YWNjZXNzICE9IDAgJiYgZmF1bHQtPmFjY2VzcyAhPSAzKSkg ewogCQkJCW5vdXZlYXVfc3ZtX2ZhdWx0X2NhbmNlbF9mYXVsdChzdm0sIGZhdWx0KTsKIAkJCQlj b250aW51ZTsKLS0gCjIuMjMuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQt Z2Z4