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