From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Gunthorpe Subject: [PATCH v4 hmm 04/12] mm/hmm: Simplify hmm_get_or_create and make it reliable Date: Mon, 24 Jun 2019 18:01:02 -0300 Message-ID: <20190624210110.5098-5-jgg@ziepe.ca> References: <20190624210110.5098-1-jgg@ziepe.ca> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190624210110.5098-1-jgg-uk2M96/98Pc@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Jerome Glisse , Ralph Campbell , John Hubbard , Felix.Kuehling-5C7GfCeVMHo@public.gmane.org Cc: Andrea Arcangeli , Philip Yang , linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org, Jason Gunthorpe , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Ira Weiny , Christoph Hellwig , Ben Skeggs List-Id: linux-rdma@vger.kernel.org RnJvbTogSmFzb24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgoKQXMgY29kZWQgdGhpcyBm dW5jdGlvbiBjYW4gZmFsc2UtZmFpbCBpbiB2YXJpb3VzIHJhY3kgc2l0dWF0aW9ucy4gTWFrZSBp dApyZWxpYWJsZSBhbmQgc2ltcGxlciBieSBydW5uaW5nIHVuZGVyIHRoZSB3cml0ZSBzaWRlIG9m IHRoZSBtbWFwX3NlbSBhbmQKYXZvaWRpbmcgdGhlIGZhbHNlLWZhaWxpbmcgY29tcGFyZS9leGNo YW5nZSBwYXR0ZXJuLiBEdWUgdG8gdGhlIG1tYXBfc2VtCnRoaXMgbm8gbG9uZ2VyIGhhcyB0byBh dm9pZCByYWNpbmcgd2l0aCBhIDJuZCBwYXJhbGxlbApobW1fZ2V0X29yX2NyZWF0ZSgpLgoKVW5m b3J0dW5hdGVseSB0aGlzIHN0aWxsIGhhcyB0byB1c2UgdGhlIHBhZ2VfdGFibGVfbG9jayBhcyB0 aGUKbm9uLXNsZWVwaW5nIGxvY2sgcHJvdGVjdGluZyBtbS0+aG1tLCBzaW5jZSB0aGUgY29udGV4 dHMgd2hlcmUgd2UgZnJlZSB0aGUKaG1tIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBtbWFwX3NlbS4K ClNpZ25lZC1vZmYtYnk6IEphc29uIEd1bnRob3JwZSA8amdnQG1lbGxhbm94LmNvbT4KUmV2aWV3 ZWQtYnk6IEpvaG4gSHViYmFyZCA8amh1YmJhcmRAbnZpZGlhLmNvbT4KUmV2aWV3ZWQtYnk6IFJh bHBoIENhbXBiZWxsIDxyY2FtcGJlbGxAbnZpZGlhLmNvbT4KUmV2aWV3ZWQtYnk6IElyYSBXZWlu eSA8aXJhLndlaW55QGludGVsLmNvbT4KVGVzdGVkLWJ5OiBQaGlsaXAgWWFuZyA8UGhpbGlwLllh bmdAYW1kLmNvbT4KLS0tCnYyOgotIEZpeCBlcnJvciB1bndpbmQgb2YgbW1ncmFiIChKZXJvbWUp Ci0gVXNlIGhtbSBsb2NhbCBpbnN0ZWFkIG9mIDJuZCBjb250YWluZXJfb2YgKEplcm9tZSkKdjM6 Ci0gQ2FuJ3QgdXNlIG1tYXBfc2VtIGluIHRoZSBTUkNVIGNhbGxiYWNrLCBrZWVwIHVzaW5nIHRo ZQogIHBhZ2VfdGFibGVfbG9jayAoUGhpbGlwKQp2NDoKLSBQdXQgdGhlIG1tLT5obW0gPSBOVUxM IGluIHRoZSBrcmVmIHJlbGVhc2UsIHJlZHVjZSBMT0MKICBpbiBobW1fZ2V0X29yX2NyZWF0ZSgp IChDaHJpc3RvcGgpCi0tLQogbW0vaG1tLmMgfCA3NyArKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMwIGluc2Vy dGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL21tL2htbS5jIGIvbW0vaG1t LmMKaW5kZXggMDgwYjE3YTJlODdlMmQuLjA0MjNmNGNhM2E3ZTA5IDEwMDY0NAotLS0gYS9tbS9o bW0uYworKysgYi9tbS9obW0uYwpAQCAtMzEsMTYgKzMxLDYgQEAKICNpZiBJU19FTkFCTEVEKENP TkZJR19ITU1fTUlSUk9SKQogc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIGht bV9tbXVfbm90aWZpZXJfb3BzOwogCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBobW0gKm1tX2dldF9o bW0oc3RydWN0IG1tX3N0cnVjdCAqbW0pCi17Ci0Jc3RydWN0IGhtbSAqaG1tID0gUkVBRF9PTkNF KG1tLT5obW0pOwotCi0JaWYgKGhtbSAmJiBrcmVmX2dldF91bmxlc3NfemVybygmaG1tLT5rcmVm KSkKLQkJcmV0dXJuIGhtbTsKLQotCXJldHVybiBOVUxMOwotfQotCiAvKioKICAqIGhtbV9nZXRf b3JfY3JlYXRlIC0gcmVnaXN0ZXIgSE1NIGFnYWluc3QgYW4gbW0gKEhNTSBpbnRlcm5hbCkKICAq CkBAIC01NSwxMSArNDUsMTYgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaG1tICptbV9nZXRfaG1t KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQogICovCiBzdGF0aWMgc3RydWN0IGhtbSAqaG1tX2dldF9v cl9jcmVhdGUoc3RydWN0IG1tX3N0cnVjdCAqbW0pCiB7Ci0Jc3RydWN0IGhtbSAqaG1tID0gbW1f Z2V0X2htbShtbSk7Ci0JYm9vbCBjbGVhbnVwID0gZmFsc2U7CisJc3RydWN0IGhtbSAqaG1tOwor CisJbG9ja2RlcF9hc3NlcnRfaGVsZF9leGNsdXNpdmUoJm1tLT5tbWFwX3NlbSk7CiAKLQlpZiAo aG1tKQotCQlyZXR1cm4gaG1tOworCS8qIEFidXNlIHRoZSBwYWdlX3RhYmxlX2xvY2sgdG8gYWxz byBwcm90ZWN0IG1tLT5obW0uICovCisJc3Bpbl9sb2NrKCZtbS0+cGFnZV90YWJsZV9sb2NrKTsK KwlobW0gPSBtbS0+aG1tOworCWlmIChtbS0+aG1tICYmIGtyZWZfZ2V0X3VubGVzc196ZXJvKCZt bS0+aG1tLT5rcmVmKSkKKwkJZ290byBvdXRfdW5sb2NrOworCXNwaW5fdW5sb2NrKCZtbS0+cGFn ZV90YWJsZV9sb2NrKTsKIAogCWhtbSA9IGttYWxsb2Moc2l6ZW9mKCpobW0pLCBHRlBfS0VSTkVM KTsKIAlpZiAoIWhtbSkKQEAgLTc0LDU3ICs2OSw0NSBAQCBzdGF0aWMgc3RydWN0IGhtbSAqaG1t X2dldF9vcl9jcmVhdGUoc3RydWN0IG1tX3N0cnVjdCAqbW0pCiAJaG1tLT5ub3RpZmllcnMgPSAw OwogCWhtbS0+ZGVhZCA9IGZhbHNlOwogCWhtbS0+bW0gPSBtbTsKLQltbWdyYWIoaG1tLT5tbSk7 CiAKLQlzcGluX2xvY2soJm1tLT5wYWdlX3RhYmxlX2xvY2spOwotCWlmICghbW0tPmhtbSkKLQkJ bW0tPmhtbSA9IGhtbTsKLQllbHNlCi0JCWNsZWFudXAgPSB0cnVlOwotCXNwaW5fdW5sb2NrKCZt bS0+cGFnZV90YWJsZV9sb2NrKTsKKwlobW0tPm1tdV9ub3RpZmllci5vcHMgPSAmaG1tX21tdV9u b3RpZmllcl9vcHM7CisJaWYgKF9fbW11X25vdGlmaWVyX3JlZ2lzdGVyKCZobW0tPm1tdV9ub3Rp ZmllciwgbW0pKSB7CisJCWtmcmVlKGhtbSk7CisJCXJldHVybiBOVUxMOworCX0KIAotCWlmIChj bGVhbnVwKQotCQlnb3RvIGVycm9yOworCW1tZ3JhYihobW0tPm1tKTsKIAogCS8qCi0JICogV2Ug c2hvdWxkIG9ubHkgZ2V0IGhlcmUgaWYgaG9sZCB0aGUgbW1hcF9zZW0gaW4gd3JpdGUgbW9kZSBp ZSBvbgotCSAqIHJlZ2lzdHJhdGlvbiBvZiBmaXJzdCBtaXJyb3IgdGhyb3VnaCBobW1fbWlycm9y X3JlZ2lzdGVyKCkKKwkgKiBXZSBob2xkIHRoZSBleGNsdXNpdmUgbW1hcF9zZW0gaGVyZSBzbyB3 ZSBrbm93IHRoYXQgbW0tPmhtbSBpcworCSAqIHN0aWxsIE5VTEwgb3IgMCBrcmVmLCBhbmQgaXMg c2FmZSB0byB1cGRhdGUuCiAJICovCi0JaG1tLT5tbXVfbm90aWZpZXIub3BzID0gJmhtbV9tbXVf bm90aWZpZXJfb3BzOwotCWlmIChfX21tdV9ub3RpZmllcl9yZWdpc3RlcigmaG1tLT5tbXVfbm90 aWZpZXIsIG1tKSkKLQkJZ290byBlcnJvcl9tbTsKLQotCXJldHVybiBobW07Ci0KLWVycm9yX21t OgogCXNwaW5fbG9jaygmbW0tPnBhZ2VfdGFibGVfbG9jayk7Ci0JaWYgKG1tLT5obW0gPT0gaG1t KQotCQltbS0+aG1tID0gTlVMTDsKKwltbS0+aG1tID0gaG1tOworCitvdXRfdW5sb2NrOgogCXNw aW5fdW5sb2NrKCZtbS0+cGFnZV90YWJsZV9sb2NrKTsKLWVycm9yOgotCW1tZHJvcChobW0tPm1t KTsKLQlrZnJlZShobW0pOwotCXJldHVybiBOVUxMOworCXJldHVybiBobW07CiB9CiAKIHN0YXRp YyB2b2lkIGhtbV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSkKIHsKLQlrZnJlZShjb250 YWluZXJfb2YocmN1LCBzdHJ1Y3QgaG1tLCByY3UpKTsKKwlzdHJ1Y3QgaG1tICpobW0gPSBjb250 YWluZXJfb2YocmN1LCBzdHJ1Y3QgaG1tLCByY3UpOworCisJbW1kcm9wKGhtbS0+bW0pOworCWtm cmVlKGhtbSk7CiB9CiAKIHN0YXRpYyB2b2lkIGhtbV9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQog ewogCXN0cnVjdCBobW0gKmhtbSA9IGNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3QgaG1tLCBrcmVm KTsKLQlzdHJ1Y3QgbW1fc3RydWN0ICptbSA9IGhtbS0+bW07CiAKLQltbXVfbm90aWZpZXJfdW5y ZWdpc3Rlcl9ub19yZWxlYXNlKCZobW0tPm1tdV9ub3RpZmllciwgbW0pOworCXNwaW5fbG9jaygm aG1tLT5tbS0+cGFnZV90YWJsZV9sb2NrKTsKKwlpZiAoaG1tLT5tbS0+aG1tID09IGhtbSkKKwkJ aG1tLT5tbS0+aG1tID0gTlVMTDsKKwlzcGluX3VubG9jaygmaG1tLT5tbS0+cGFnZV90YWJsZV9s b2NrKTsKIAotCXNwaW5fbG9jaygmbW0tPnBhZ2VfdGFibGVfbG9jayk7Ci0JaWYgKG1tLT5obW0g PT0gaG1tKQotCQltbS0+aG1tID0gTlVMTDsKLQlzcGluX3VubG9jaygmbW0tPnBhZ2VfdGFibGVf bG9jayk7Ci0KLQltbWRyb3AoaG1tLT5tbSk7CisJbW11X25vdGlmaWVyX3VucmVnaXN0ZXJfbm9f cmVsZWFzZSgmaG1tLT5tbXVfbm90aWZpZXIsIGhtbS0+bW0pOwogCW1tdV9ub3RpZmllcl9jYWxs X3NyY3UoJmhtbS0+cmN1LCBobW1fZnJlZV9yY3UpOwogfQogCi0tIAoyLjIyLjAKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBs aXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeA==