From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yang, Philip" Subject: [PATCH 2/3] drm/amdgpu: support userptr cross VMAs case with HMM Date: Tue, 5 Mar 2019 18:09:37 +0000 Message-ID: <20190305180915.15216-3-Philip.Yang@amd.com> References: <20190305180915.15216-1-Philip.Yang@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190305180915.15216-1-Philip.Yang-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "Yang, Philip" dXNlcnB0ciBtYXkgY3Jvc3MgdHdvIFZNQXMgaWYgdGhlIGZvcmtlZCBjaGlsZCBwcm9jZXNzIChu b3QgY2FsbCBleGVjCmFmdGVyIGZvcmspIG1hbGxvYyBidWZmZXIsIHRoZW4gZnJlZSBpdCwgYW5k IHRoZW4gbWFsbG9jIGxhcmdlciBzaXplCmJ1Ziwga2VyZW5sIHdpbGwgY3JlYXRlIG5ldyBWTUEg YWRqYWNlbnQgdG8gb2xkIFZNQSB3aGljaCB3YXMgY2xvbmVkCmZyb20gcGFyZW50IHByb2Nlc3Ms IHNvbWUgcGFnZXMgb2YgdXNlcnB0ciBhcmUgaW4gdGhlIGZpcnN0IFZNQSwgdGhlCnJlc3QgcGFn ZXMgYXJlIGluIHRoZSBzZWNvbmQgVk1BLgoKSE1NIGV4cGVjdHMgcmFuZ2Ugb25seSBoYXZlIG9u ZSBWTUEsIGxvb3Agb3ZlciBhbGwgVk1BcyBpbiB0aGUgYWRkcmVzcwpyYW5nZSwgY3JlYXRlIG11 bHRpcGxlIHJhbmdlcyB0byBoYW5kbGUgdGhpcyBjYXNlLiBTZWUKaXNfbWVyZ2VhYmxlX2Fub25f dm1hIGluIG1tL21tYXAuYyBmb3IgZGV0YWlscy4KCkNoYW5nZS1JZDogSTBjYThjNzdlMjhkZWFi Y2NjMTM5OTA2ZjlmZmVlMDRiN2UzODMzMTQKU2lnbmVkLW9mZi1ieTogUGhpbGlwIFlhbmcgPFBo aWxpcC5ZYW5nQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3R0bS5jIHwgMTIyICsrKysrKysrKysrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDg3 IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV90dG0uYwppbmRleCBjZDBjY2ZiYmNiODQuLjE3M2JmNGRiNTk5NCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uYwpAQCAtNzExLDcgKzcxMSw4IEBAIHN0cnVj dCBhbWRncHVfdHRtX3R0IHsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QJKnVzZXJ0YXNrOwogCXVpbnQz Ml90CQl1c2VyZmxhZ3M7CiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0FNREdQVV9VU0VSUFRS KQotCXN0cnVjdCBobW1fcmFuZ2UJcmFuZ2U7CisJc3RydWN0IGhtbV9yYW5nZQkqcmFuZ2VzOwor CWludAkJCW5yX3JhbmdlczsKICNlbmRpZgogfTsKIApAQCAtNzIzLDYyICs3MjQsMTA0IEBAIHN0 cnVjdCBhbWRncHVfdHRtX3R0IHsKICAqIG9uY2UgYWZ0ZXJ3YXJkcyB0byBzdG9wIEhNTSB0cmFj a2luZwogICovCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0FNREdQVV9VU0VSUFRSKQorCisv KiBTdXBwb3J0IFVzZXJwdHIgcGFnZXMgY3Jvc3MgbWF4IDE2IHZtYXMgKi8KKyNkZWZpbmUgTUFY X05SX1ZNQVMJKDE2KQorCiBpbnQgYW1kZ3B1X3R0bV90dF9nZXRfdXNlcl9wYWdlcyhzdHJ1Y3Qg dHRtX3R0ICp0dG0sIHN0cnVjdCBwYWdlICoqcGFnZXMpCiB7CiAJc3RydWN0IGFtZGdwdV90dG1f dHQgKmd0dCA9ICh2b2lkICopdHRtOwogCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gZ3R0LT51c2Vy dGFzay0+bW07Ci0JdW5zaWduZWQgbG9uZyBlbmQgPSBndHQtPnVzZXJwdHIgKyB0dG0tPm51bV9w YWdlcyAqIFBBR0VfU0laRTsKLQlzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSA9ICZndHQtPnJhbmdl OwotCWludCByID0gMCwgaTsKKwl1bnNpZ25lZCBsb25nIHN0YXJ0ID0gZ3R0LT51c2VycHRyOwor CXVuc2lnbmVkIGxvbmcgZW5kID0gc3RhcnQgKyB0dG0tPm51bV9wYWdlcyAqIFBBR0VfU0laRTsK KwlzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZXM7CisJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEg PSBOVUxMLCAqdm1hc1tNQVhfTlJfVk1BU107CisJdWludDY0X3QgKnBmbnMsIGY7CisJaW50IHIg PSAwLCBpLCBucl9wYWdlczsKIAogCWlmICghbW0pIC8qIEhhcHBlbnMgZHVyaW5nIHByb2Nlc3Mg c2h1dGRvd24gKi8KIAkJcmV0dXJuIC1FU1JDSDsKIAotCWFtZGdwdV9obW1faW5pdF9yYW5nZShy YW5nZSk7Ci0KIAlkb3duX3JlYWQoJm1tLT5tbWFwX3NlbSk7CiAKLQlyYW5nZS0+dm1hID0gZmlu ZF92bWEobW0sIGd0dC0+dXNlcnB0cik7Ci0JaWYgKCFyYW5nZV9pbl92bWEocmFuZ2UtPnZtYSwg Z3R0LT51c2VycHRyLCBlbmQpKQotCQlyID0gLUVGQVVMVDsKLQllbHNlIGlmICgoZ3R0LT51c2Vy ZmxhZ3MgJiBBTURHUFVfR0VNX1VTRVJQVFJfQU5PTk9OTFkpICYmCi0JCXJhbmdlLT52bWEtPnZt X2ZpbGUpCisJLyogdXNlciBwYWdlcyBtYXkgY3Jvc3MgbXVsdGlwbGUgVk1BcyAqLworCWd0dC0+ bnJfcmFuZ2VzID0gMDsKKwlkbyB7CisJCXZtYSA9IGZpbmRfdm1hKG1tLCB2bWEgPyB2bWEtPnZt X2VuZCA6IHN0YXJ0KTsKKwkJaWYgKHVubGlrZWx5KCF2bWEpKSB7CisJCQlyID0gLUVGQVVMVDsK KwkJCWdvdG8gb3V0OworCQl9CisJCXZtYXNbZ3R0LT5ucl9yYW5nZXMrK10gPSB2bWE7CisJCWlm IChndHQtPm5yX3JhbmdlcyA+PSBNQVhfTlJfVk1BUykgeworCQkJRFJNX0VSUk9SKCJpbnZhbGlk IHVzZXJwdHIgcmFuZ2VcbiIpOworCQkJciA9IC1FRkFVTFQ7CisJCQlnb3RvIG91dDsKKwkJfQor CX0gd2hpbGUgKGVuZCA+IHZtYS0+dm1fZW5kKTsKKworCURSTV9ERUJVR19EUklWRVIoIjB4JWx4 IG5yX3JhbmdlcyAlZCBwYWdlcyAweCVseFxuIiwKKwkJc3RhcnQsIGd0dC0+bnJfcmFuZ2VzLCB0 dG0tPm51bV9wYWdlcyk7CisKKwlpZiAodW5saWtlbHkoKGd0dC0+dXNlcmZsYWdzICYgQU1ER1BV X0dFTV9VU0VSUFRSX0FOT05PTkxZKSAmJgorCQl2bWFzWzBdLT52bV9maWxlKSkgewogCQlyID0g LUVQRVJNOwotCWlmIChyKQogCQlnb3RvIG91dDsKKwl9CiAKLQlyYW5nZS0+cGZucyA9IGt2bWFs bG9jX2FycmF5KHR0bS0+bnVtX3BhZ2VzLCBzaXplb2YodWludDY0X3QpLAotCQkJCSAgICAgR0ZQ X0tFUk5FTCk7Ci0JaWYgKHJhbmdlLT5wZm5zID09IE5VTEwpIHsKKwlyYW5nZXMgPSBrdm1hbGxv Y19hcnJheShndHQtPm5yX3Jhbmdlcywgc2l6ZW9mKCpyYW5nZXMpLCBHRlBfS0VSTkVMKTsKKwlp ZiAodW5saWtlbHkoIXJhbmdlcykpIHsKIAkJciA9IC1FTk9NRU07CiAJCWdvdG8gb3V0OwogCX0K LQlyYW5nZS0+c3RhcnQgPSBndHQtPnVzZXJwdHI7Ci0JcmFuZ2UtPmVuZCA9IGVuZDsKIAotCXJh bmdlLT5wZm5zWzBdID0gcmFuZ2UtPmZsYWdzW0hNTV9QRk5fVkFMSURdOwotCXJhbmdlLT5wZm5z WzBdIHw9IGFtZGdwdV90dG1fdHRfaXNfcmVhZG9ubHkodHRtKSA/Ci0JCQkJMCA6IHJhbmdlLT5m bGFnc1tITU1fUEZOX1dSSVRFXTsKLQlmb3IgKGkgPSAxOyBpIDwgdHRtLT5udW1fcGFnZXM7IGkr KykKLQkJcmFuZ2UtPnBmbnNbaV0gPSByYW5nZS0+cGZuc1swXTsKKwlwZm5zID0ga3ZtYWxsb2Nf YXJyYXkodHRtLT5udW1fcGFnZXMsIHNpemVvZigqcGZucyksIEdGUF9LRVJORUwpOworCWlmICh1 bmxpa2VseSghcGZucykpIHsKKwkJciA9IC1FTk9NRU07CisJCWdvdG8gb3V0X2ZyZWVfcmFuZ2Vz OworCX0KKworCWZvciAoaSA9IDA7IGkgPCBndHQtPm5yX3JhbmdlczsgaSsrKQorCQlhbWRncHVf aG1tX2luaXRfcmFuZ2UoJnJhbmdlc1tpXSk7CisKKwlmID0gcmFuZ2VzWzBdLmZsYWdzW0hNTV9Q Rk5fVkFMSURdOworCWYgfD0gYW1kZ3B1X3R0bV90dF9pc19yZWFkb25seSh0dG0pID8KKwkJCQkw IDogcmFuZ2VzWzBdLmZsYWdzW0hNTV9QRk5fV1JJVEVdOworCW1lbXNldDY0KHBmbnMsIGYsIHR0 bS0+bnVtX3BhZ2VzKTsKKworCWZvciAobnJfcGFnZXMgPSAwLCBpID0gMDsgaSA8IGd0dC0+bnJf cmFuZ2VzOyBpKyspIHsKKwkJcmFuZ2VzW2ldLnZtYSA9IHZtYXNbaV07CisJCXJhbmdlc1tpXS5z dGFydCA9IG1heChzdGFydCwgdm1hc1tpXS0+dm1fc3RhcnQpOworCQlyYW5nZXNbaV0uZW5kID0g bWluKGVuZCwgdm1hc1tpXS0+dm1fZW5kKTsKKwkJcmFuZ2VzW2ldLnBmbnMgPSBwZm5zICsgbnJf cGFnZXM7CisJCW5yX3BhZ2VzICs9IChyYW5nZXNbaV0uZW5kIC0gcmFuZ2VzW2ldLnN0YXJ0KSAv IFBBR0VfU0laRTsKKworCQlyID0gaG1tX3ZtYV9mYXVsdCgmcmFuZ2VzW2ldLCB0cnVlKTsKKwkJ aWYgKHVubGlrZWx5KHIpKQorCQkJYnJlYWs7CisJfQorCWlmICh1bmxpa2VseShyKSkgeworCQl3 aGlsZSAoaS0tKQorCQkJaG1tX3ZtYV9yYW5nZV9kb25lKCZyYW5nZXNbaV0pOwogCi0JLyogVGhp cyBtYXkgdHJpZ2dlciBwYWdlIHRhYmxlIHVwZGF0ZSAqLwotCXIgPSBobW1fdm1hX2ZhdWx0KHJh bmdlLCB0cnVlKTsKLQlpZiAocikKIAkJZ290byBvdXRfZnJlZV9wZm5zOworCX0KIAogCXVwX3Jl YWQoJm1tLT5tbWFwX3NlbSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgdHRtLT5udW1fcGFnZXM7IGkr KykKLQkJcGFnZXNbaV0gPSBobW1fcGZuX3RvX3BhZ2UocmFuZ2UsIHJhbmdlLT5wZm5zW2ldKTsK KwkJcGFnZXNbaV0gPSBobW1fcGZuX3RvX3BhZ2UoJnJhbmdlc1swXSwgcGZuc1tpXSk7CisJZ3R0 LT5yYW5nZXMgPSByYW5nZXM7CiAKIAlyZXR1cm4gMDsKIAogb3V0X2ZyZWVfcGZuczoKLQlrdmZy ZWUocmFuZ2UtPnBmbnMpOwotCXJhbmdlLT5wZm5zID0gTlVMTDsKKwlrdmZyZWUocGZucyk7Citv dXRfZnJlZV9yYW5nZXM6CisJa3ZmcmVlKHJhbmdlcyk7CiBvdXQ6CiAJdXBfcmVhZCgmbW0tPm1t YXBfc2VtKTsKKwogCXJldHVybiByOwogfQogCkBAIC03OTIsMTUgKzgzNSwyMyBAQCBib29sIGFt ZGdwdV90dG1fdHRfZ2V0X3VzZXJfcGFnZXNfZG9uZShzdHJ1Y3QgdHRtX3R0ICp0dG0pCiB7CiAJ c3RydWN0IGFtZGdwdV90dG1fdHQgKmd0dCA9ICh2b2lkICopdHRtOwogCWJvb2wgciA9IGZhbHNl OworCWludCBpOwogCiAJaWYgKCFndHQgfHwgIWd0dC0+dXNlcnB0cikKIAkJcmV0dXJuIGZhbHNl OwogCi0JV0FSTl9PTkNFKCFndHQtPnJhbmdlLnBmbnMsICJObyB1c2VyIHBhZ2VzIHRvIGNoZWNr XG4iKTsKLQlpZiAoZ3R0LT5yYW5nZS5wZm5zKSB7Ci0JCXIgPSBobW1fdm1hX3JhbmdlX2RvbmUo Jmd0dC0+cmFuZ2UpOwotCQlrdmZyZWUoZ3R0LT5yYW5nZS5wZm5zKTsKLQkJZ3R0LT5yYW5nZS5w Zm5zID0gTlVMTDsKKwlEUk1fREVCVUdfRFJJVkVSKCJ1c2VyX3BhZ2VzX2RvbmUgMHglbGx4IG5y X3JhbmdlcyAlZCBwYWdlcyAweCVseFxuIiwKKwkJZ3R0LT51c2VycHRyLCBndHQtPm5yX3Jhbmdl cywgdHRtLT5udW1fcGFnZXMpOworCisJV0FSTl9PTkNFKCFndHQtPnJhbmdlcyB8fCAhZ3R0LT5y YW5nZXNbMF0ucGZucywKKwkJIk5vIHVzZXIgcGFnZXMgdG8gY2hlY2tcbiIpOworCisJaWYgKGd0 dC0+cmFuZ2VzKSB7CisJCWZvciAoaSA9IDA7IGkgPCBndHQtPm5yX3JhbmdlczsgaSsrKQorCQkJ ciB8PSBobW1fdm1hX3JhbmdlX2RvbmUoJmd0dC0+cmFuZ2VzW2ldKTsKKwkJa3ZmcmVlKGd0dC0+ cmFuZ2VzWzBdLnBmbnMpOworCQlrdmZyZWUoZ3R0LT5yYW5nZXMpOworCQlndHQtPnJhbmdlcyA9 IE5VTEw7CiAJfQogCiAJcmV0dXJuIHI7CkBAIC04ODQsOCArOTM1LDkgQEAgc3RhdGljIHZvaWQg YW1kZ3B1X3R0bV90dF91bnBpbl91c2VycHRyKHN0cnVjdCB0dG1fdHQgKnR0bSkKIAlzZ19mcmVl X3RhYmxlKHR0bS0+c2cpOwogCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0FNREdQVV9VU0VS UFRSKQotCWlmIChndHQtPnJhbmdlLnBmbnMgJiYKLQkgICAgdHRtLT5wYWdlc1swXSA9PSBobW1f cGZuX3RvX3BhZ2UoJmd0dC0+cmFuZ2UsIGd0dC0+cmFuZ2UucGZuc1swXSkpCisJaWYgKGd0dC0+ cmFuZ2VzICYmCisJICAgIHR0bS0+cGFnZXNbMF0gPT0gaG1tX3Bmbl90b19wYWdlKCZndHQtPnJh bmdlc1swXSwKKwkJCQkJICAgICBndHQtPnJhbmdlc1swXS5wZm5zWzBdKSkKIAkJV0FSTl9PTkNF KDEsICJNaXNzaW5nIGdldF91c2VyX3BhZ2VfZG9uZVxuIik7CiAjZW5kaWYKIH0KLS0gCjIuMTcu MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdm eCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4