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 327C6C17440 for ; Tue, 12 Nov 2019 20:46:53 +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 104A62067B for ; Tue, 12 Nov 2019 20:46:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 104A62067B 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 5971F6EBDF; Tue, 12 Nov 2019 20:46:44 +0000 (UTC) Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8A42B6E4FF for ; Tue, 12 Nov 2019 20:22:49 +0000 (UTC) Received: by mail-qk1-x741.google.com with SMTP id q70so15663791qke.12 for ; Tue, 12 Nov 2019 12:22:49 -0800 (PST) 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=vqvN4B+GZDHJfLAROKnQtObwYcG8NnWCYaeQr/r4Yjg=; b=RoOrw2YxxBgiSeQJxjkeB97rLYGzuuK1dAesW1EYqO+8JkWsERFAbZSxLk4LesPKiQ j9afOoSdmMOIlgczSbdKeHsa33dDAwozh9t925sgJ56uIg09UJkNvZC3VLOSNbnyCjfw k/PQNDWzaLYrPpG9sm9dVOXuqyldSVBfNSw9GHhRffXEaUAvEQN27KdBkFHgZPlKCdgU DALK6GsrDu8xpIY4sUPf37rvuzjXFhUOAR43x8xI16mPoW0hGStCke88pAlRYNWfVf0d NshL0Kvfi6L0m3PZo9V0zkGSKwTkYSJnmQBxxW0jK8Qrv2ib3l8IBPjfBSMjEriQyc7d uKrQ== X-Gm-Message-State: APjAAAU/tpuUwtc6d0OF8B4gp3+ODrgEz3F+MFDp0PFcehW20GWKaibz /bcs1X++DbC2QT7WmaIhE7/KtQ== X-Google-Smtp-Source: APXvYqzFu20HWA4PgtAhJHB+bLJq8aqbJo1eqsXCE4xmuI4E5wY3L+M+VCzEsjkRVcXxyC6V5RzbGA== X-Received: by 2002:a37:4f10:: with SMTP id d16mr17145608qkb.80.1573590168615; Tue, 12 Nov 2019 12:22:48 -0800 (PST) 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 x11sm11977678qtk.93.2019.11.12.12.22.47 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 12 Nov 2019 12:22:48 -0800 (PST) Received: from jgg by mlx.ziepe.ca with local (Exim 4.90_1) (envelope-from ) id 1iUcgZ-0003kM-HA; Tue, 12 Nov 2019 16:22:47 -0400 From: Jason Gunthorpe To: linux-mm@kvack.org, Jerome Glisse , Ralph Campbell , John Hubbard , Felix.Kuehling@amd.com Subject: [PATCH v3 09/14] nouveau: use mmu_interval_notifier instead of hmm_mirror Date: Tue, 12 Nov 2019 16:22:26 -0400 Message-Id: <20191112202231.3856-10-jgg@ziepe.ca> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191112202231.3856-1-jgg@ziepe.ca> References: <20191112202231.3856-1-jgg@ziepe.ca> MIME-Version: 1.0 X-Mailman-Approved-At: Tue, 12 Nov 2019 20:46:43 +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=vqvN4B+GZDHJfLAROKnQtObwYcG8NnWCYaeQr/r4Yjg=; b=i4FIIV1i6W5YGmBKiivnhgSWn7eyQivhbmggGezQ1djWPpk+dSxp4UPWSbxX8yNZIF bgYyGPFz71/fPKWkTVutZ4CbeB+KhFw+4GIMak7HwQvDMnRpsTzv8rjTFlw20BMZ1x1+ fcHS+VrPml4IoTKhndxWOk4Ww2cMeEJjs+EnpZwz5rAJKDPj4CiUjaOL6ZykOdsHkQmw U7deZJScunIlf/k9Pwk7lDnBwqtQx3mPakMBr19FjvFEaErQzKw7cagTQpFRY15G4lOx NqjtWrp6HazQ5Z8uTZzHt8aZ7hCUm35K2JauHR7vB0jwOrcAyNPuBHOL6IxqQ47IHVo6 Ivjg== 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: <20191112202226._ylA7smRRUoj1senxjLBvd_hvRAqW-V4bmPmhnUC-u8@z> RnJvbTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgoKUmVtb3ZlIHRoZSBobW1f bWlycm9yIG9iamVjdCBhbmQgdXNlIHRoZSBtbXVfaW50ZXJ2YWxfbm90aWZpZXIgQVBJIGluc3Rl YWQKZm9yIHRoZSByYW5nZSwgYW5kIHVzZSB0aGUgbm9ybWFsIG1tdV9ub3RpZmllciBBUEkgZm9y IHRoZSBnZW5lcmFsCmludmFsaWRhdGlvbiBjYWxsYmFjay4KCldoaWxlIGhlcmUgcmUtb3JnYW5p emUgdGhlIHBhZ2VmYXVsdCBwYXRoIHNvIHRoZSBsb2NraW5nIHBhdHRlcm4gaXMgY2xlYXIuCgpu b3V2ZWF1IGlzIHRoZSBvbmx5IGRyaXZlciB0aGF0IHVzZXMgYSB0ZW1wb3JhcnkgcmFuZ2Ugb2Jq ZWN0IGFuZCBpbnN0ZWFkCmZvcndhcmRzIG5lYXJseSBldmVyeSBpbnZhbGlkYXRpb24gcmFuZ2Ug ZGlyZWN0bHkgdG8gdGhlIEhXLiBXaGlsZSB0aGlzIGlzCm5vdCBob3cgdGhlIG1tdV9pbnRlcnZh bF9ub3RpZmllciB3YXMgaW50ZW5kZWQgdG8gYmUgdXNlZCwgdGhlIG92ZXJoZWFkcyBvbgp0aGUg cGFnZWZhdWx0aW5nIHBhdGggYXJlIHNpbWlsYXIgdG8gdGhlIGV4aXN0aW5nIGhtbV9taXJyb3Ig dmVyc2lvbi4KUGFydGljdWxhcmx5IHNpbmNlIHRoZSBpbnRlcnZhbCB0cmVlIHdpbGwgYmUgc21h bGwuCgpUZXN0ZWQtYnk6IFJhbHBoIENhbXBiZWxsIDxyY2FtcGJlbGxAbnZpZGlhLmNvbT4KU2ln bmVkLW9mZi1ieTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmMgfCAxNzkgKysrKysrKysrKysrKystLS0t LS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5OSBpbnNlcnRpb25zKCspLCA4MCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N2bS5jIGIv ZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYwppbmRleCA1NzdmODgxMTkyNWE1 OS4uZGY5YmYxZmQxYmMwYmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25v dXZlYXVfc3ZtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYwpA QCAtOTYsOCArOTYsNiBAQCBzdHJ1Y3Qgbm91dmVhdV9zdm1tIHsKIAl9IHVubWFuYWdlZDsKIAog CXN0cnVjdCBtdXRleCBtdXRleDsKLQotCXN0cnVjdCBobW1fbWlycm9yIG1pcnJvcjsKIH07CiAK ICNkZWZpbmUgU1ZNTV9EQkcocyxmLGEuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0yOTMsMjMgKzI5MSwxMSBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IG1tdV9ub3RpZmllcl9vcHMgbm91dmVhdV9tbl9vcHMgPSB7CiAJLmZyZWVfbm90 aWZpZXIgPSBub3V2ZWF1X3N2bW1fZnJlZV9ub3RpZmllciwKIH07CiAKLXN0YXRpYyBpbnQKLW5v dXZlYXVfc3ZtbV9zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcyhzdHJ1Y3QgaG1tX21pcnJvciAq bWlycm9yLAotCQkJCQljb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3JhbmdlICp1cGRhdGUpCi17 Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaG1tX21pcnJvcl9vcHMgbm91 dmVhdV9zdm1tID0gewotCS5zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcyA9IG5vdXZlYXVfc3Zt bV9zeW5jX2NwdV9kZXZpY2VfcGFnZXRhYmxlcywKLX07Ci0KIHZvaWQKIG5vdXZlYXVfc3ZtbV9m aW5pKHN0cnVjdCBub3V2ZWF1X3N2bW0gKipwc3ZtbSkKIHsKIAlzdHJ1Y3Qgbm91dmVhdV9zdm1t ICpzdm1tID0gKnBzdm1tOwogCWlmIChzdm1tKSB7Ci0JCWhtbV9taXJyb3JfdW5yZWdpc3Rlcigm c3ZtbS0+bWlycm9yKTsKIAkJbXV0ZXhfbG9jaygmc3ZtbS0+bXV0ZXgpOwogCQlzdm1tLT52bW0g PSBOVUxMOwogCQltdXRleF91bmxvY2soJnN2bW0tPm11dGV4KTsKQEAgLTM1NywxNSArMzQzLDEw IEBAIG5vdXZlYXVfc3ZtbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CiAJCWdvdG8gb3V0X2ZyZWU7CiAKIAlkb3duX3dyaXRlKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0p OwotCXN2bW0tPm1pcnJvci5vcHMgPSAmbm91dmVhdV9zdm1tOwotCXJldCA9IGhtbV9taXJyb3Jf cmVnaXN0ZXIoJnN2bW0tPm1pcnJvciwgY3VycmVudC0+bW0pOwotCWlmIChyZXQpCi0JCWdvdG8g b3V0X21tX3VubG9jazsKLQogCXN2bW0tPm5vdGlmaWVyLm9wcyA9ICZub3V2ZWF1X21uX29wczsK IAlyZXQgPSBfX21tdV9ub3RpZmllcl9yZWdpc3Rlcigmc3ZtbS0+bm90aWZpZXIsIGN1cnJlbnQt Pm1tKTsKIAlpZiAocmV0KQotCQlnb3RvIG91dF9obW1fdW5yZWdpc3RlcjsKKwkJZ290byBvdXRf bW1fdW5sb2NrOwogCS8qIE5vdGUsIG93bmVyc2hpcCBvZiBzdm1tIHRyYW5zZmVycyB0byBtbXVf bm90aWZpZXIgKi8KIAogCWNsaS0+c3ZtLnN2bW0gPSBzdm1tOwpAQCAtMzc0LDggKzM1NSw2IEBA IG5vdXZlYXVfc3ZtbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJ bXV0ZXhfdW5sb2NrKCZjbGktPm11dGV4KTsKIAlyZXR1cm4gMDsKIAotb3V0X2htbV91bnJlZ2lz dGVyOgotCWhtbV9taXJyb3JfdW5yZWdpc3Rlcigmc3ZtbS0+bWlycm9yKTsKIG91dF9tbV91bmxv Y2s6CiAJdXBfd3JpdGUoJmN1cnJlbnQtPm1tLT5tbWFwX3NlbSk7CiBvdXRfZnJlZToKQEAgLTUw Myw0MyArNDgyLDkwIEBAIG5vdXZlYXVfc3ZtX2ZhdWx0X2NhY2hlKHN0cnVjdCBub3V2ZWF1X3N2 bSAqc3ZtLAogCQlmYXVsdC0+aW5zdCwgZmF1bHQtPmFkZHIsIGZhdWx0LT5hY2Nlc3MpOwogfQog Ci1zdGF0aWMgaW5saW5lIGJvb2wKLW5vdXZlYXVfcmFuZ2VfZG9uZShzdHJ1Y3QgaG1tX3Jhbmdl ICpyYW5nZSkKK3N0cnVjdCBzdm1fbm90aWZpZXIgeworCXN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90 aWZpZXIgbm90aWZpZXI7CisJc3RydWN0IG5vdXZlYXVfc3ZtbSAqc3ZtbTsKK307CisKK3N0YXRp YyBib29sIG5vdXZlYXVfc3ZtX3JhbmdlX2ludmFsaWRhdGUoc3RydWN0IG1tdV9pbnRlcnZhbF9u b3RpZmllciAqbW5pLAorCQkJCQkgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAqcmFu Z2UsCisJCQkJCSB1bnNpZ25lZCBsb25nIGN1cl9zZXEpCiB7Ci0JYm9vbCByZXQgPSBobW1fcmFu Z2VfdmFsaWQocmFuZ2UpOworCXN0cnVjdCBzdm1fbm90aWZpZXIgKnNuID0KKwkJY29udGFpbmVy X29mKG1uaSwgc3RydWN0IHN2bV9ub3RpZmllciwgbm90aWZpZXIpOwogCi0JaG1tX3JhbmdlX3Vu cmVnaXN0ZXIocmFuZ2UpOwotCXJldHVybiByZXQ7CisJLyoKKwkgKiBzZXJpYWxpemVzIHRoZSB1 cGRhdGUgdG8gbW5pLT5pbnZhbGlkYXRlX3NlcSBkb25lIGJ5IGNhbGxlciBhbmQKKwkgKiBwcmV2 ZW50cyBpbnZhbGlkYXRpb24gb2YgdGhlIFBURSBmcm9tIHByb2dyZXNzaW5nIHdoaWxlIEhXIGlz IGJlaW5nCisJICogcHJvZ3JhbW1lZC4gVGhpcyBpcyB2ZXJ5IGhhY2t5IGFuZCBvbmx5IHdvcmtz IGJlY2F1c2UgdGhlIG5vcm1hbAorCSAqIG5vdGlmaWVyIHRoYXQgZG9lcyBpbnZhbGlkYXRpb24g aXMgYWx3YXlzIGNhbGxlZCBhZnRlciB0aGUgcmFuZ2UKKwkgKiBub3RpZmllci4KKwkgKi8KKwlp ZiAobW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpCisJCW11dGV4X2xvY2soJnNu LT5zdm1tLT5tdXRleCk7CisJZWxzZSBpZiAoIW11dGV4X3RyeWxvY2soJnNuLT5zdm1tLT5tdXRl eCkpCisJCXJldHVybiBmYWxzZTsKKwltbXVfaW50ZXJ2YWxfc2V0X3NlcShtbmksIGN1cl9zZXEp OworCW11dGV4X3VubG9jaygmc24tPnN2bW0tPm11dGV4KTsKKwlyZXR1cm4gdHJ1ZTsKIH0KIAot c3RhdGljIGludAotbm91dmVhdV9yYW5nZV9mYXVsdChzdHJ1Y3Qgbm91dmVhdV9zdm1tICpzdm1t LCBzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSkKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbW11X2ludGVy dmFsX25vdGlmaWVyX29wcyBub3V2ZWF1X3N2bV9tbmlfb3BzID0geworCS5pbnZhbGlkYXRlID0g bm91dmVhdV9zdm1fcmFuZ2VfaW52YWxpZGF0ZSwKK307CisKK3N0YXRpYyBpbnQgbm91dmVhdV9y YW5nZV9mYXVsdChzdHJ1Y3Qgbm91dmVhdV9zdm1tICpzdm1tLAorCQkJICAgICAgIHN0cnVjdCBu b3V2ZWF1X2RybSAqZHJtLCB2b2lkICpkYXRhLCB1MzIgc2l6ZSwKKwkJCSAgICAgICB1NjQgKnBm bnMsIHN0cnVjdCBzdm1fbm90aWZpZXIgKm5vdGlmaWVyKQogeworCXVuc2lnbmVkIGxvbmcgdGlt ZW91dCA9CisJCWppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEhNTV9SQU5HRV9ERUZBVUxUX1RJ TUVPVVQpOworCS8qIEhhdmUgSE1NIGZhdWx0IHBhZ2VzIHdpdGhpbiB0aGUgZmF1bHQgd2luZG93 IHRvIHRoZSBHUFUuICovCisJc3RydWN0IGhtbV9yYW5nZSByYW5nZSA9IHsKKwkJLm5vdGlmaWVy ID0gJm5vdGlmaWVyLT5ub3RpZmllciwKKwkJLnN0YXJ0ID0gbm90aWZpZXItPm5vdGlmaWVyLmlu dGVydmFsX3RyZWUuc3RhcnQsCisJCS5lbmQgPSBub3RpZmllci0+bm90aWZpZXIuaW50ZXJ2YWxf dHJlZS5sYXN0ICsgMSwKKwkJLnBmbnMgPSBwZm5zLAorCQkuZmxhZ3MgPSBub3V2ZWF1X3N2bV9w Zm5fZmxhZ3MsCisJCS52YWx1ZXMgPSBub3V2ZWF1X3N2bV9wZm5fdmFsdWVzLAorCQkucGZuX3No aWZ0ID0gTlZJRl9WTU1fUEZOTUFQX1YwX0FERFJfU0hJRlQsCisJfTsKKwlzdHJ1Y3QgbW1fc3Ry dWN0ICptbSA9IG5vdGlmaWVyLT5ub3RpZmllci5tbTsKIAlsb25nIHJldDsKIAotCXJhbmdlLT5k ZWZhdWx0X2ZsYWdzID0gMDsKLQlyYW5nZS0+cGZuX2ZsYWdzX21hc2sgPSAtMVVMOworCXdoaWxl ICh0cnVlKSB7CisJCWlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKQorCQkJcmV0dXJu IC1FQlVTWTsKIAotCXJldCA9IGhtbV9yYW5nZV9yZWdpc3RlcihyYW5nZSwgJnN2bW0tPm1pcnJv cik7Ci0JaWYgKHJldCkgewotCQl1cF9yZWFkKCZzdm1tLT5ub3RpZmllci5tbS0+bW1hcF9zZW0p OwotCQlyZXR1cm4gKGludClyZXQ7Ci0JfQorCQlyYW5nZS5ub3RpZmllcl9zZXEgPSBtbXVfaW50 ZXJ2YWxfcmVhZF9iZWdpbihyYW5nZS5ub3RpZmllcik7CisJCXJhbmdlLmRlZmF1bHRfZmxhZ3Mg PSAwOworCQlyYW5nZS5wZm5fZmxhZ3NfbWFzayA9IC0xVUw7CisJCWRvd25fcmVhZCgmbW0tPm1t YXBfc2VtKTsKKwkJcmV0ID0gaG1tX3JhbmdlX2ZhdWx0KCZyYW5nZSwgMCk7CisJCXVwX3JlYWQo Jm1tLT5tbWFwX3NlbSk7CisJCWlmIChyZXQgPD0gMCkgeworCQkJaWYgKHJldCA9PSAwIHx8IHJl dCA9PSAtRUJVU1kpCisJCQkJY29udGludWU7CisJCQlyZXR1cm4gcmV0OworCQl9CiAKLQlpZiAo IWhtbV9yYW5nZV93YWl0X3VudGlsX3ZhbGlkKHJhbmdlLCBITU1fUkFOR0VfREVGQVVMVF9USU1F T1VUKSkgewotCQl1cF9yZWFkKCZzdm1tLT5ub3RpZmllci5tbS0+bW1hcF9zZW0pOwotCQlyZXR1 cm4gLUVCVVNZOworCQltdXRleF9sb2NrKCZzdm1tLT5tdXRleCk7CisJCWlmIChtbXVfaW50ZXJ2 YWxfcmVhZF9yZXRyeShyYW5nZS5ub3RpZmllciwKKwkJCQkJICAgIHJhbmdlLm5vdGlmaWVyX3Nl cSkpIHsKKwkJCW11dGV4X3VubG9jaygmc3ZtbS0+bXV0ZXgpOworCQkJY29udGludWU7CisJCX0K KwkJYnJlYWs7CiAJfQogCi0JcmV0ID0gaG1tX3JhbmdlX2ZhdWx0KHJhbmdlLCAwKTsKLQlpZiAo cmV0IDw9IDApIHsKLQkJaWYgKHJldCA9PSAwKQotCQkJcmV0ID0gLUVCVVNZOwotCQl1cF9yZWFk KCZzdm1tLT5ub3RpZmllci5tbS0+bW1hcF9zZW0pOwotCQlobW1fcmFuZ2VfdW5yZWdpc3Rlcihy YW5nZSk7Ci0JCXJldHVybiByZXQ7Ci0JfQotCXJldHVybiAwOworCW5vdXZlYXVfZG1lbV9jb252 ZXJ0X3Bmbihkcm0sICZyYW5nZSk7CisKKwlzdm1tLT52bW0tPnZtbS5vYmplY3QuY2xpZW50LT5z dXBlciA9IHRydWU7CisJcmV0ID0gbnZpZl9vYmplY3RfaW9jdGwoJnN2bW0tPnZtbS0+dm1tLm9i amVjdCwgZGF0YSwgc2l6ZSwgTlVMTCk7CisJc3ZtbS0+dm1tLT52bW0ub2JqZWN0LmNsaWVudC0+ c3VwZXIgPSBmYWxzZTsKKwltdXRleF91bmxvY2soJnN2bW0tPm11dGV4KTsKKworCXJldHVybiBy ZXQ7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTU1OSw3ICs1ODUsNiBAQCBub3V2ZWF1X3N2bV9mYXVs dChzdHJ1Y3QgbnZpZl9ub3RpZnkgKm5vdGlmeSkKIAkJfSBpOwogCQl1NjQgcGh5c1sxNl07CiAJ fSBhcmdzOwotCXN0cnVjdCBobW1fcmFuZ2UgcmFuZ2U7CiAJc3RydWN0IHZtX2FyZWFfc3RydWN0 ICp2bWE7CiAJdTY0IGluc3QsIHN0YXJ0LCBsaW1pdDsKIAlpbnQgZmksIGZuLCBwaSwgZmlsbDsK QEAgLTYxNSw2ICs2NDAsNyBAQCBub3V2ZWF1X3N2bV9mYXVsdChzdHJ1Y3QgbnZpZl9ub3RpZnkg Km5vdGlmeSkKIAlhcmdzLmkucC52ZXJzaW9uID0gMDsKIAogCWZvciAoZmkgPSAwOyBmbiA9IGZp ICsgMSwgZmkgPCBidWZmZXItPmZhdWx0X25yOyBmaSA9IGZuKSB7CisJCXN0cnVjdCBzdm1fbm90 aWZpZXIgbm90aWZpZXI7CiAJCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tOwogCiAJCS8qIENhbmNlbCBh bnkgZmF1bHRzIGZyb20gbm9uLVNWTSBjaGFubmVscy4gKi8KQEAgLTYyMyw3ICs2NDksNiBAQCBu b3V2ZWF1X3N2bV9mYXVsdChzdHJ1Y3QgbnZpZl9ub3RpZnkgKm5vdGlmeSkKIAkJCWNvbnRpbnVl OwogCQl9CiAJCVNWTU1fREJHKHN2bW0sICJhZGRyICUwMTZsbHgiLCBidWZmZXItPmZhdWx0W2Zp XS0+YWRkcik7Ci0JCW1tID0gc3ZtbS0+bm90aWZpZXIubW07CiAKIAkJLyogV2UgdHJ5IGFuZCBn cm91cCBoYW5kbGluZyBvZiBmYXVsdHMgd2l0aGluIGEgc21hbGwKIAkJICogd2luZG93IGludG8g YSBzaW5nbGUgdXBkYXRlLgpAQCAtNjM3LDYgKzY2MiwxMiBAQCBub3V2ZWF1X3N2bV9mYXVsdChz dHJ1Y3QgbnZpZl9ub3RpZnkgKm5vdGlmeSkKIAkJCXN0YXJ0ID0gbWF4X3QodTY0LCBzdGFydCwg c3ZtbS0+dW5tYW5hZ2VkLmxpbWl0KTsKIAkJU1ZNTV9EQkcoc3ZtbSwgInduZHcgJTAxNmxseC0l MDE2bGx4Iiwgc3RhcnQsIGxpbWl0KTsKIAorCQltbSA9IHN2bW0tPm5vdGlmaWVyLm1tOworCQlp ZiAoIW1tZ2V0X25vdF96ZXJvKG1tKSkgeworCQkJbm91dmVhdV9zdm1fZmF1bHRfY2FuY2VsX2Zh dWx0KHN2bSwgYnVmZmVyLT5mYXVsdFtmaV0pOworCQkJY29udGludWU7CisJCX0KKwogCQkvKiBJ bnRlcnNlY3QgZmF1bHQgd2luZG93IHdpdGggdGhlIENQVSBWTUEsIGNhbmNlbGxpbmcKIAkJICog dGhlIGZhdWx0IGlmIHRoZSBhZGRyZXNzIGlzIGludmFsaWQuCiAJCSAqLwpAQCAtNjQ1LDE2ICs2 NzYsMTggQEAgbm91dmVhdV9zdm1fZmF1bHQoc3RydWN0IG52aWZfbm90aWZ5ICpub3RpZnkpCiAJ CWlmICghdm1hKSB7CiAJCQlTVk1NX0VSUihzdm1tLCAid25kdyAlMDE2bGx4LSUwMTZsbHgiLCBz dGFydCwgbGltaXQpOwogCQkJdXBfcmVhZCgmbW0tPm1tYXBfc2VtKTsKKwkJCW1tcHV0KG1tKTsK IAkJCW5vdXZlYXVfc3ZtX2ZhdWx0X2NhbmNlbF9mYXVsdChzdm0sIGJ1ZmZlci0+ZmF1bHRbZmld KTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCXN0YXJ0ID0gbWF4X3QodTY0LCBzdGFydCwgdm1hLT52 bV9zdGFydCk7CiAJCWxpbWl0ID0gbWluX3QodTY0LCBsaW1pdCwgdm1hLT52bV9lbmQpOworCQl1 cF9yZWFkKCZtbS0+bW1hcF9zZW0pOwogCQlTVk1NX0RCRyhzdm1tLCAid25kdyAlMDE2bGx4LSUw MTZsbHgiLCBzdGFydCwgbGltaXQpOwogCiAJCWlmIChidWZmZXItPmZhdWx0W2ZpXS0+YWRkciAh PSBzdGFydCkgewogCQkJU1ZNTV9FUlIoc3ZtbSwgImFkZHIgJTAxNmxseCIsIGJ1ZmZlci0+ZmF1 bHRbZmldLT5hZGRyKTsKLQkJCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7CisJCQltbXB1dChtbSk7 CiAJCQlub3V2ZWF1X3N2bV9mYXVsdF9jYW5jZWxfZmF1bHQoc3ZtLCBidWZmZXItPmZhdWx0W2Zp XSk7CiAJCQljb250aW51ZTsKIAkJfQpAQCAtNzEwLDMzICs3NDMsMTkgQEAgbm91dmVhdV9zdm1f ZmF1bHQoc3RydWN0IG52aWZfbm90aWZ5ICpub3RpZnkpCiAJCQkgYXJncy5pLnAuYWRkciwKIAkJ CSBhcmdzLmkucC5hZGRyICsgYXJncy5pLnAuc2l6ZSwgZm4gLSBmaSk7CiAKLQkJLyogSGF2ZSBI TU0gZmF1bHQgcGFnZXMgd2l0aGluIHRoZSBmYXVsdCB3aW5kb3cgdG8gdGhlIEdQVS4gKi8KLQkJ cmFuZ2Uuc3RhcnQgPSBhcmdzLmkucC5hZGRyOwotCQlyYW5nZS5lbmQgPSBhcmdzLmkucC5hZGRy ICsgYXJncy5pLnAuc2l6ZTsKLQkJcmFuZ2UucGZucyA9IGFyZ3MucGh5czsKLQkJcmFuZ2UuZmxh Z3MgPSBub3V2ZWF1X3N2bV9wZm5fZmxhZ3M7Ci0JCXJhbmdlLnZhbHVlcyA9IG5vdXZlYXVfc3Zt X3Bmbl92YWx1ZXM7Ci0JCXJhbmdlLnBmbl9zaGlmdCA9IE5WSUZfVk1NX1BGTk1BUF9WMF9BRERS X1NISUZUOwotYWdhaW46Ci0JCXJldCA9IG5vdXZlYXVfcmFuZ2VfZmF1bHQoc3ZtbSwgJnJhbmdl KTsKLQkJaWYgKHJldCA9PSAwKSB7Ci0JCQltdXRleF9sb2NrKCZzdm1tLT5tdXRleCk7Ci0JCQlp ZiAoIW5vdXZlYXVfcmFuZ2VfZG9uZSgmcmFuZ2UpKSB7Ci0JCQkJbXV0ZXhfdW5sb2NrKCZzdm1t LT5tdXRleCk7Ci0JCQkJZ290byBhZ2FpbjsKLQkJCX0KLQotCQkJbm91dmVhdV9kbWVtX2NvbnZl cnRfcGZuKHN2bS0+ZHJtLCAmcmFuZ2UpOwotCi0JCQlzdm1tLT52bW0tPnZtbS5vYmplY3QuY2xp ZW50LT5zdXBlciA9IHRydWU7Ci0JCQlyZXQgPSBudmlmX29iamVjdF9pb2N0bCgmc3ZtbS0+dm1t LT52bW0ub2JqZWN0LAotCQkJCQkJJmFyZ3MsIHNpemVvZihhcmdzLmkpICsKLQkJCQkJCXBpICog c2l6ZW9mKGFyZ3MucGh5c1swXSksCi0JCQkJCQlOVUxMKTsKLQkJCXN2bW0tPnZtbS0+dm1tLm9i amVjdC5jbGllbnQtPnN1cGVyID0gZmFsc2U7Ci0JCQltdXRleF91bmxvY2soJnN2bW0tPm11dGV4 KTsKLQkJCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7CisJCW5vdGlmaWVyLnN2bW0gPSBzdm1tOwor CQlyZXQgPSBtbXVfaW50ZXJ2YWxfbm90aWZpZXJfaW5zZXJ0KCZub3RpZmllci5ub3RpZmllciwK KwkJCQkJCSAgIHN2bW0tPm5vdGlmaWVyLm1tLAorCQkJCQkJICAgYXJncy5pLnAuYWRkciwgYXJn cy5pLnAuc2l6ZSwKKwkJCQkJCSAgICZub3V2ZWF1X3N2bV9tbmlfb3BzKTsKKwkJaWYgKCFyZXQp IHsKKwkJCXJldCA9IG5vdXZlYXVfcmFuZ2VfZmF1bHQoCisJCQkJc3ZtbSwgc3ZtLT5kcm0sICZh cmdzLAorCQkJCXNpemVvZihhcmdzLmkpICsgcGkgKiBzaXplb2YoYXJncy5waHlzWzBdKSwKKwkJ CQlhcmdzLnBoeXMsICZub3RpZmllcik7CisJCQltbXVfaW50ZXJ2YWxfbm90aWZpZXJfcmVtb3Zl KCZub3RpZmllci5ub3RpZmllcik7CiAJCX0KKwkJbW1wdXQobW0pOwogCiAJCS8qIENhbmNlbCBh bnkgZmF1bHRzIGluIHRoZSB3aW5kb3cgd2hvc2UgcGFnZXMgZGlkbid0IG1hbmFnZQogCQkgKiB0 byBrZWVwIHRoZWlyIHZhbGlkIGJpdCwgb3Igc3RheSB3cml0ZWFibGUgd2hlbiByZXF1aXJlZC4K QEAgLTc0NSwxMCArNzY0LDEwIEBAIG5vdXZlYXVfc3ZtX2ZhdWx0KHN0cnVjdCBudmlmX25vdGlm eSAqbm90aWZ5KQogCQkgKi8KIAkJd2hpbGUgKGZpIDwgZm4pIHsKIAkJCXN0cnVjdCBub3V2ZWF1 X3N2bV9mYXVsdCAqZmF1bHQgPSBidWZmZXItPmZhdWx0W2ZpKytdOwotCQkJcGkgPSAoZmF1bHQt PmFkZHIgLSByYW5nZS5zdGFydCkgPj4gUEFHRV9TSElGVDsKKwkJCXBpID0gKGZhdWx0LT5hZGRy IC0gYXJncy5pLnAuYWRkcikgPj4gUEFHRV9TSElGVDsKIAkJCWlmIChyZXQgfHwKLQkJCSAgICAg IShyYW5nZS5wZm5zW3BpXSAmIE5WSUZfVk1NX1BGTk1BUF9WMF9WKSB8fAotCQkJICAgICghKHJh bmdlLnBmbnNbcGldICYgTlZJRl9WTU1fUEZOTUFQX1YwX1cpICYmCisJCQkgICAgICEoYXJncy5w aHlzW3BpXSAmIE5WSUZfVk1NX1BGTk1BUF9WMF9WKSB8fAorCQkJICAgICghKGFyZ3MucGh5c1tw aV0gJiBOVklGX1ZNTV9QRk5NQVBfVjBfVykgJiYKIAkJCSAgICAgZmF1bHQtPmFjY2VzcyAhPSAw ICYmIGZhdWx0LT5hY2Nlc3MgIT0gMykpIHsKIAkJCQlub3V2ZWF1X3N2bV9mYXVsdF9jYW5jZWxf ZmF1bHQoc3ZtLCBmYXVsdCk7CiAJCQkJY29udGludWU7Ci0tIAoyLjI0LjAKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0 CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeA==